SpringBoot2 自定义404处理

SpringBoot2中默认对404的处理没有采用抛异常的方式,故仅使用ControllerAdvice注解是无法捕获并处理404的。

SpringBoot2中默认对404的处理没有采用抛异常的方式,故仅使用ControllerAdvice注解是无法捕获并处理404的。

通过在配置中设置spring.mvc.throw-exception-if-no-handler-found为true,可修改为对404抛NoHandlerFoundException

然后通过ControllerAdvice注解进行处理,如下:

@ControllerAdvice
public class WebErrorHandler  {

    @ExceptionHandler(NoHandlerFoundException.class)
    public ModelAndView noHandlerFoundHandler(
    		HttpServletRequest req, Exception ex) {         
          return new ModelAndView("err404");
    }
}

运行,访问一个不存在的URL,What?出来的还是SpringBoot默认的404页面!

还需要在配置中设置spring.resources.add-mappings为false,禁用默认的资源处理,

再运行,访问一个不存在的URL,应该可以看到err404页面的内容了。

同时也会看到static下面的内容访问都是404了,咋回事?!上面的禁用默认的资源处理把对static的处理也给禁了,

需要对static下的资源做映射配置处理,如下:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
    }
}

这样就实现了对404的自定义处理。


文章出处:JPCode.net 精品代码网
链接:http://www.jpcode.net/article/10022

标签: SpringBoot


评论: