程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在spring启动中拦截嵌入式Tomcat上的“全局” 404大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在spring启动中拦截嵌入式tomcat上的“全局” 404?

开发过程中遇到如何在spring启动中拦截嵌入式tomcat上的“全局” 404的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在spring启动中拦截嵌入式tomcat上的“全局” 404的解决方法建议,希望对你解决如何在spring启动中拦截嵌入式tomcat上的“全局” 404有所启发或帮助;

事实证明,我找到了答案。通过SpringConfiguration无法实现,但是您可以创建自己的Servletdispatcher并将其配置为引发异常,如下所述:如何配置默认的dispatcherServlet?

然后我上面的代码捕获404很好

解决方法

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

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

我测试过的所有其他状态代码都称为自定义解析器,只有404呈现给我默认的tomcat404页面。更具体地说,将404抛出到控制器外部,例如,如果仅注册了用于/test的控制器,则请求/teXst。在这种情况下,我不会调用Resolver,而只能看到默认的tomcat http Status 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 Error处理都摆脱我的注释方式

@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以外的所有异常都可以正常工作。知道什么机制可以创建这些页面,以及为什么不调用我的异常解析器吗?这是在使用SpringMVC 4.1.7.RELEASE和嵌入式tomcat 8.0.23的Spring Boot 1.2.5.RELEASE上

大佬总结

以上是大佬教程为你收集整理的如何在spring启动中拦截嵌入式Tomcat上的“全局” 404全部内容,希望文章能够帮你解决如何在spring启动中拦截嵌入式Tomcat上的“全局” 404所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。