springboot拦截器拦了静态资源css,js,png,jpeg,svg等等静态资源
1、在SpringBoot中自己写的拦截器,居然把静态资源也拦截了,导致了页面加载失败。
1 package com.bie.config; 2 3 import com.bie.component.MyLocalResolver; 4 import com.bie.interceptor.LoginInterceptor; 5 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Configuration; 7 import org.springframework.web.servlet.LocaleResolver; 8 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 9 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 10 import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 11 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 12 13 /** 14 * 15 */ 16 @Configuration 17 public class SpringMvcWebConfigSupport implements WebMvcConfigurer { 18 19 /** 20 * 默认访问的是首页 21 * 22 * @param registry 23 */ 24 @Override 25 public void addViewControllers(ViewControllerRegistry registry) { 26 registry.addViewController("/").setViewName("login"); 27 registry.addViewController("/login.html").setViewName("login"); 28 registry.addViewController("/main.html").setViewName("dashboard"); 29 } 30 31 /** 32 * 将static下面的js,css文件加载出来 33 * 34 * @param registry 35 */ 36 @Override 37 public void addResourceHandlers(ResourceHandlerRegistry registry) { 38 //registry.addResourceHandler("/static/").addResourceLocations("classpath:/static/"); 39 registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); 40 } 41 42 /** 43 * 将国际化添加到容器中 44 * 45 * @return 46 */ 47 @Bean 48 public LocaleResolver localeResolver() { 49 return new MyLocalResolver(); 50 } 51 52 /** 53 * 注册拦截器 54 * 55 * @param registry 56 */ 57 @Override 58 public void addInterceptors(InterceptorRegistry registry) { 59 registry.addInterceptor(new LoginInterceptor()) 60 .addPathPatterns("/**") 61 .excludePathPatterns("/", "/login.html", "/user/login", 62 "/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", 63 "/**/*.jpeg", "/**/*.gif", "/**/fonts/*", "/**/*.svg"); 64 } 65 }
解决方法,在你注册拦截器的方法中,将这些静态资源排除掉,这样就可以顺利加载出来了,静态资源。实现自己的目标。
1 /** 2 * 注册拦截器 3 * 4 * @param registry 5 */ 6 @Override 7 public void addInterceptors(InterceptorRegistry registry) { 8 registry.addInterceptor(new LoginInterceptor()) 9 .addPathPatterns("/**") 10 .excludePathPatterns("/", "/login.html", "/user/login", 11 "/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", 12 "/**/*.jpeg", "/**/*.gif", "/**/fonts/*", "/**/*.svg"); 13 }
上面是顺利加载的页面,下面是没有加载静态资源的页面;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?