【问题标题】:How to intercept "global" 404s on embedded Tomcats in spring-boot如何在 spring-boot 中拦截嵌入式 Tomcat 上的“全局”404
【发布时间】:2015-10-25 00:41:57
【问题描述】:

我对 spring-boot 附带的嵌入式 tomcat 有一个相当奇怪的问题,特别是它的错误处理。

基本上,我正在尝试通过自定义处理程序处理所有异常。 长话短说:它适用于除 404 之外的所有内容。是否通过任何其他机制而不是异常处理?

我测试的所有其他状态代码都调用了我的自定义解析器,只有 404 为我提供了默认的 Tomcat 404 页面。更具体地说,404 被抛出控制器之外,例如如果只有 /test 注册的控制器,则请求 /teXst。在这种异常情况下,我不会调用我的解析器,只会看到默认的 Tomcat HTTP 状态 404 页面。

知道什么会妨碍我吗? 这是我设置解析器的方法

public class GlobalExceptionResolver extends AbstractHandlerExceptionResolver {
        @Override
        public int getOrder() {
            return Integer.MIN_VALUE;
        }

        @Override
        protected boolean shouldApplyTo(HttpServletRequest request, Object handler) {
            return true;
        }

        @Override
        protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
     // my stuff ending with returning an instance of ModelAndView
    }

为了让所有默认的 Spring-Boot 错误处理不受我注释的影响

@EnableAutoConfiguration(exclude = org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration.class)

这给我留下了 404、500 等的默认 Tomcat 错误页面,最后设置了我的自定义处理程序

@Bean
public WebMvcConfigurerAdapter adapter() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
            exceptionResolvers.add(new GlobalExceptionResolver());
        }

如上所述,此设置适用于除 HTTP 状态 404 之外的所有异常。知道什么机制创建这些页面以及为什么不调用我的异常解析器吗?这是在 Spring Boot 1.2.5.RELEASE 上使用 Spring MVC 4.1.7.RELEASE 和嵌入式 Tomcat 8.0.23

【问题讨论】:

    标签: spring-mvc tomcat spring-boot


    【解决方案1】:

    事实证明,我找到了答案。这是不可能通过 Spring Configuration 实现的,但您可以创建自己的 ServletDispatcher 并将其配置为抛出异常,如下所述:How to configure default DispatcherServlet?

    那么我上面的代码可以很好地捕获 404

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 2018-05-28
      • 2018-08-09
      • 2016-06-17
      • 2020-10-22
      • 2020-01-21
      • 1970-01-01
      • 2021-03-27
      相关资源
      最近更新 更多