当前位置: 首页 > 知识库问答 >
问题:

如何在spring-boot嵌入式Tomcats上拦截“全局”404S

罗昕
2023-03-14

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

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
    }
@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上发布的。使用Spring MVC 4.1.7发布并嵌入Tomcat 8.0.23

共有1个答案

易招
2023-03-14

事实证明,我找到了答案。通过Spring配置是不可能的,但是您可以创建自己的ServletDispatcher并将其配置为跟踪异常,如下所述:如何配置默认的DispatcherServlet?

那么我上面的代码捕捉404s就可以了

 类似资料:
  • 主要内容:定义拦截器,注册拦截器,指定拦截规则,实现登陆功能,验证登陆及登陆拦截功能我们对拦截器并不陌生,无论是 Struts 2 还是 Spring MVC 中都提供了拦截器功能,它可以根据 URL 对请求进行拦截,主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能上。Spring Boot 同样提供了拦截器功能。  在 Spring Boot 项目中,使用拦截器功能通常需要以下 3 步: 定义拦截器; 注册拦截器; 指定拦截规则(如果是拦截所有,静态资源也会被拦

  • 现在,当我到达spring-boot应用程序的endpoint时,它工作得很好 基本上,它根本不调用preandle。我错过了什么????

  • 问题内容: 我看到 一吨 的条目在我的Tomcat日志(样品粘贴下面)。这些在几个月前进行次要版本升级(Spring Security 4.2.4,IIRC)后开始出现在我的日志文件中,因此,这显然是默认情况下启用的Spring新安全功能。这里报告了类似的问题,但是我的问题专门涉及如何在控制器中拦截这些异常。有一个针对此问题的Spring Security错误记录(提供一种处理RequestRej

  • 我在Tomcat日志中看到大量条目(示例粘贴在下面)。在几个月前的一次小版本升级(Spring Security 4.2.4,IIRC)后,这些功能开始出现在我的日志文件中,因此这显然是Spring中默认启用的一个新的安全特性。这里报告了一个类似的问题,但我的问题具体涉及如何在控制器中拦截这些异常。这个问题有一个Spring Securitybug(提供一种处理RequestRejectedExc

  • 如何通过全局拦截特定格式的url跳转 重写window.location.href window.open等跳转方式的进行拦截

  • 我想对spring boot rest-api应用程序做一些端到端测试。使用spring mock MVC实现这个im。但是我无法得到200响应,因为rest api正在使用自定义的安全拦截器来验证请求中的令牌。相反,我一直得到401作为回应。如何在我的测试中包含此令牌验证? 这是我的拦截课