最近在写一个小博客,遇到了mapping for GET /css/typo.css问题,我的配置是这样的 这是我设置的自定义异常,没有拦截时静态资源也无法访问,可能是个人电脑的原因,上面的配置是将404的请求交给自定义处理,并且资源的映射也交给自定义 自定义异常类
@ControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ModelAndView notFountHandler(NoHandlerFoundException e){
ModelAndView mav = new ModelAndView();
mav.addObject("e","对不起,您请求的"+e.getRequestURL()+"资源不能存在,后续会继续将会添加完善");
mav.setViewName("error");
return mav;
}
}
存在的问题是cdn引入的静态资源没有404,而自定义的则无法访问。这里导致的问题是因为拦截器中没有设置,将拦截器删除也无效,因此需要再拦截器中重写addResourceHandlers方法
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/static/**")) {
registry.addResourceHandler("/static/**").addResourceLocations(
"classpath:/static/");
}
if (!registry.hasMappingForPattern("/**")) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/");
}
WebMvcConfigurer.super.addResourceHandlers(registry);
}
亲测有效
|