Java Spring MVC中可用于定制405错误响应的选项?

Java Spring MVC中可用于定制405错误响应的选项?,java,spring,spring-mvc,model-view-controller,Java,Spring,Spring Mvc,Model View Controller,请引导我 关于Spring MVC的2个问题- 在我的项目中,每当发生异常时,整个堆栈跟踪都会打印在响应中。像这样的- { “原因”:空, “stackTrace”:[ { “methodName”:“resolveHandlerMethod”, “文件名”:“AnnotationMethodHandlerAdapter.java”, “行号”:123, “className”:“org.springframework.web.servlet.mvc.annotation.AnnotationM

请引导我

关于Spring MVC的2个问题-

  • 在我的项目中,每当发生异常时,整个堆栈跟踪都会打印在响应中。像这样的-
  • { “原因”:空, “stackTrace”:[ { “methodName”:“resolveHandlerMethod”, “文件名”:“AnnotationMethodHandlerAdapter.java”, “行号”:123, “className”:“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodResolver”, “nativeMethod”:错误 }

    我试图通过各种建议来消除这个问题,比如@ControllerAdvice和@Order(0),甚至在web.xml中-

    <error-page>
        <location>/error/GeneralError</location>
    </error-page>
    
    尽管如此,web.xml中的@ControllerAdvice或错误映射仍然无法捕获405错误,因为我没有机会添加自定义消息

    有什么建议吗

  • 第二,我试着扩展
  • org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

    ,并将其与web.xml中的bean定义一起使用,@Controller和@ExceptionHandler注释,但Spring框架只是简单地忽略了我的努力,再次使用默认的方法


    我们不能修改此行为吗?

    您可以对extends
    DispatcherServlet
    执行此操作

    试试这个:

    public class GlobalRequestHandler extends DispatcherServlet{
    
        @Override
        protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
            String path = request.getServletPath();
            //handle here as per your requirement.
            super.service(request, response);
        }
    }
    
    在配置类中添加此bean:

    @Bean
    DispatcherServlet dispatcherServlet() {
        return new GlobalRequestHandler();
    }
    

    感谢分享,但我希望DefaultHandlerExceptionResolver的行为能够处理异常或错误情况。很抱歉,我可能听起来很愚蠢,但DispatcherServlet不是也会影响我的积极情景吗?
    @Bean
    DispatcherServlet dispatcherServlet() {
        return new GlobalRequestHandler();
    }