zoukankan      html  css  js  c++  java
  • org.springframework.web.servlet.PageNotFound

    2017-07-11 16:36:13.489 WARN  [http-nio-8032-exec-16]org.springframework.web.servlet.PageNotFound -Request method 'POST' not supported
    2017-07-11 16:37:30.491 WARN  [http-nio-8032-exec-48]org.springframework.web.servlet.PageNotFound -Request method 'POST' not supported


    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

    package org.springframework.web.servlet.mvc.support;
    
    import java.io.IOException;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    import org.springframework.beans.ConversionNotSupportedException;
    import org.springframework.beans.TypeMismatchException;
    import org.springframework.core.Ordered;
    import org.springframework.http.MediaType;
    import org.springframework.http.converter.HttpMessageNotReadableException;
    import org.springframework.http.converter.HttpMessageNotWritableException;
    import org.springframework.util.CollectionUtils;
    import org.springframework.util.StringUtils;
    import org.springframework.validation.BindException;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.HttpMediaTypeNotAcceptableException;
    import org.springframework.web.HttpMediaTypeNotSupportedException;
    import org.springframework.web.HttpRequestMethodNotSupportedException;
    import org.springframework.web.bind.MethodArgumentNotValidException;
    import org.springframework.web.bind.MissingPathVariableException;
    import org.springframework.web.bind.MissingServletRequestParameterException;
    import org.springframework.web.bind.ServletRequestBindingException;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestPart;
    import org.springframework.web.context.request.async.AsyncRequestTimeoutException;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.support.MissingServletRequestPartException;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.NoHandlerFoundException;
    import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver;
    
    /**
     * Default implementation of the {@link org.springframework.web.servlet.HandlerExceptionResolver
     * HandlerExceptionResolver} interface that resolves standard Spring exceptions and translates
     * them to corresponding HTTP status codes.
     *
     * <p>This exception resolver is enabled by default in the common Spring
     * {@link org.springframework.web.servlet.DispatcherServlet}.
     *
     * @author Arjen Poutsma
     * @author Rossen Stoyanchev
     * @author Juergen Hoeller
     * @since 3.0
     * @see org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
     * @see #handleNoSuchRequestHandlingMethod
     * @see #handleHttpRequestMethodNotSupported
     * @see #handleHttpMediaTypeNotSupported
     * @see #handleMissingServletRequestParameter
     * @see #handleServletRequestBindingException
     * @see #handleTypeMismatch
     * @see #handleHttpMessageNotReadable
     * @see #handleHttpMessageNotWritable
     * @see #handleMethodArgumentNotValidException
     * @see #handleMissingServletRequestParameter
     * @see #handleMissingServletRequestPartException
     * @see #handleBindException
     */
    public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver {
    
        /**
         * Log category to use when no mapped handler is found for a request.
         * @see #pageNotFoundLogger
         */
        public static final String PAGE_NOT_FOUND_LOG_CATEGORY = "org.springframework.web.servlet.PageNotFound";
    
        /**
         * Additional logger to use when no mapped handler is found for a request.
         * @see #PAGE_NOT_FOUND_LOG_CATEGORY
         */
        protected static final Log pageNotFoundLogger = LogFactory.getLog(PAGE_NOT_FOUND_LOG_CATEGORY);
    
        ....
        
            /**
         * Handle the case where no request handler method was found.
         * <p>The default implementation logs a warning, sends an HTTP 404 error, and returns
         * an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen,
         * or the NoSuchRequestHandlingMethodException could be rethrown as-is.
         * @param ex the NoSuchRequestHandlingMethodException to be handled
         * @param request current HTTP request
         * @param response current HTTP response
         * @param handler the executed handler, or {@code null} if none chosen
         * at the time of the exception (for example, if multipart resolution failed)
         * @return an empty ModelAndView indicating the exception was handled
         * @throws IOException potentially thrown from response.sendError()
         * @deprecated as of 4.3, along with {@link org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException}
         */
        @Deprecated
        protected ModelAndView handleNoSuchRequestHandlingMethod(org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException ex,
                HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
    
            pageNotFoundLogger.warn(ex.getMessage());
            response.sendError(HttpServletResponse.SC_NOT_FOUND);
            return new ModelAndView();
        }
    
        /**
         * Handle the case where no request handler method was found for the particular HTTP request method.
         * <p>The default implementation logs a warning, sends an HTTP 405 error, sets the "Allow" header,
         * and returns an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen,
         * or the HttpRequestMethodNotSupportedException could be rethrown as-is.
         * @param ex the HttpRequestMethodNotSupportedException to be handled
         * @param request current HTTP request
         * @param response current HTTP response
         * @param handler the executed handler, or {@code null} if none chosen
         * at the time of the exception (for example, if multipart resolution failed)
         * @return an empty ModelAndView indicating the exception was handled
         * @throws IOException potentially thrown from response.sendError()
         */
        protected ModelAndView handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex,
                HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
    
            pageNotFoundLogger.warn(ex.getMessage());
            String[] supportedMethods = ex.getSupportedMethods();
            if (supportedMethods != null) {
                response.setHeader("Allow", StringUtils.arrayToDelimitedString(supportedMethods, ", "));
            }
            response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, ex.getMessage());
            return new ModelAndView();
        }
        ....
    }    

    tips:

    access.log

    actuator的/trace

    /trace:该端点用来返回基本的HTTP跟踪信息。
    默认情况下,跟踪信息的存储采用org.springframework.boot.actuate.trace.InMemoryTraceRepository实现的内存方式,始终保留最近的100条请求记录。

  • 相关阅读:
    自动删除几天前的备份集文件脚本 for windows
    Oracle备份脚本(数据泵)-Windows平台
    机器学习常用python包
    AI summary
    git 设置
    mystar01 nodejs MVC gulp 项目搭建
    electron搭建开发环境
    AI ubantu 环境安装
    xtrabackup原理
    xtrabackup 安装
  • 原文地址:https://www.cnblogs.com/softidea/p/7152112.html
Copyright © 2011-2022 走看看