现象
SpringBoot 2.x项目自定义拦截器后无法访问到js、css静态文件。
目录如下:
引用静态文件方式:
原因
自定义的拦截器拦截了所有请求,导致静态文件不能访问。
注:SpringBoot 1.x的resources/static目录下的静态文件在自定义拦截器后访问不会被拦截,而2.x会拦截。
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/", "/index.html", "/user/login");
}
解决办法
方法1:排除asserts目录及其子目录下的静态文件的拦截。
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/", "/index.html", "/user/login", "/webjars/**", "/asserts/**");
}
缺点:如果static目录下有多个静态文件目录的话,就需要排除多个目录。
方法2:
1)首先在appication.properties中配置静态资源的映射路径:
spring.mvc.static-path-pattern=/static/**
不配置的话默认静态资源默认映射路径为: /**
2)排除/static目录及其子目录下静态文件的拦截
3)引用或访问静态资源时要加上/static目录