关于SpringBoot拦截器拦截静态资源的问题
作者:普通网友
这篇文章主要介绍了关于SpringBoot拦截器拦截静态资源的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
SpringBoot拦截器拦截静态资源
使用springboot2.0+的版本建立拦截器拦截访问时,发现将静态的css/js资源也拦截了。
此时需要在拦截器中配置放行资源。
直接上代码
//设置拦截,释放静态文件
registry.addInterceptor(new LoginHandlerInterceptero()).addPathPatterns("/**")
.excludePathPatterns("/user/login","/login.html","/css/**","/js/**");放行"/css/**"资源。
有些使用放行static文件夹来放行所有的静态资源,不过SpringBoot默认扫描static包下的静态资源,所以好像不管用。
下图是一次项目中配置的静态资源释放,

对文件结构不是很清楚,所以直接配置释放所有文件。
springboot拦截器为什么拦截静态资源
项目目录结构如下所示

首先是以继承的方式注册拦截器配置
@Configuration
public class SpringMvcSupport_extends extends WebMvcConfigurationSupport {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
//配置拦截器
registry.addInterceptor(loginInterceptor).
//对所有的资源进行拦截,包括静态资源
addPathPatterns("/**")
.excludePathPatterns("/login.html","/js/**","/css/**","/lib/**");
}此时访问静态资源得到如下结果:

这种方式会拦截静态资源我也不知道原因是什么希望后续补坑
但是如果以实现接口的形式来注册拦截器的话就不会拦截静态资源
@Configuration
public class SpringMvcSupport implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//配置拦截器
registry.addInterceptor(loginInterceptor).
//对所有的资源进行拦截,包括静态资源
addPathPatterns("/**")
.excludePathPatterns("/login.html","/js/**","/css/**","/lib/**");
}运行项目此时访问静态资源就可以成功访问:


这个问题卡了很久很久/(ㄒoㄒ)/~~
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- springboot设置加载静态资源的路径(spring.resources.static-locations)
- SpringBoot中的static静态资源访问、参数配置、代码自定义访问规则详解
- springboot拦截器不拦截静态资源,只拦截controller的实现方法
- springboot应用中静态资源访问与接口请求冲突问题解决
- SpringBoot2.x过后static下的静态资源无法访问的问题
- SpringBoot如何访问html和js等静态资源配置
- springboot+thymeleaf打包成jar后找不到静态资源的坑及解决
- SpringBoot无法访问/static下静态资源的解决
- SpringBoot静态资源及原理解析
