springboot的拦截器是否会拦截静态资源
时间: 2023-06-10 22:03:55 浏览: 117
是的,Spring Boot 的拦截器会拦截所有的请求,包括静态资源的请求。但是,你可以通过配置来忽略某些静态资源的请求。例如,在 Spring Boot 中,你可以使用 WebMvcConfigurer 接口的 addResourceHandlers 方法来添加静态资源处理程序,并指定需要忽略的路径。
相关问题
springboot 拦截器不拦截静态资源
### 如何配置 Spring Boot 的拦截器以避免拦截静态资源
在 Spring Boot 中,当配置自定义拦截器时,默认情况下所有的请求都会被拦截,这包括静态资源(如 CSS、JS 和 HTML 文件)。如果希望让这些静态资源不受拦截器的影响,则可以通过 `excludePathPatterns` 方法来实现。
以下是具体的解决方案:
#### 解决方案描述
为了防止拦截器影响到静态资源的加载,可以将静态资源的相关路径添加到拦截器的排除列表中。具体来说,在重写 `addInterceptors` 方法时,调用 `excludePathPatterns` 并传入静态资源所在的路径模式[^2]。
以下是一个完整的代码示例:
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加自定义拦截器并设置需要排除的路径
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**") // 对所有路径生效
.excludePathPatterns(
"/toLogin", "/login",
"/css/**", "/js/**", "/images/**", "/fonts/**"
); // 排除特定路径以及静态资源目录
}
}
```
上述代码中的 `/css/**`, `/js/**`, `/images/**`, `/fonts/**` 是常见的静态资源路径模式。开发者可以根据实际项目的静态资源配置调整这些路径。
#### 修改前端引用路径
除了在后端配置拦截器外,还需要确保前端页面正确引用静态资源文件。通常情况下,Spring Boot 默认会在 `src/main/resources/static` 下寻找静态资源文件。因此,HTML 页面中的资源路径可能需要调整为相对于根路径的形式,并且建议在路径前加上 `/static/` 前缀[^1]。
例如:
```html
<link href="/static/asserts/css/bootstrap.min.css" rel="stylesheet">
<script src="/static/asserts/js/Chart.min.js"></script>
```
完成以上更改后,记得重新构建项目以使改动生效(可通过快捷键 Ctrl+F9 或其他方式执行构建操作)。
---
### 注意事项
- **静态资源默认位置**:Spring Boot 默认会从 `src/main/resources/static` 目录读取静态资源文件。如果放置的位置不同,则需相应调整路径。
- **路径匹配规则**:`excludePathPatterns` 支持 Ant 风格的路径匹配语法,例如 `/**/*.css` 表示匹配任意子目录下的 `.css` 文件。
- **缓存问题**:某些浏览器可能会缓存旧版本的静态资源文件,导致更新后的文件未及时显示效果。此时可尝试清除浏览器缓存或强制刷新页面。
---
### 总结
通过合理配置拦截器的排除路径和修正前端资源引用路径,能够有效解决因拦截器而导致的静态资源无法正常加载的问题。此方法已在多个场景下验证可行[^3]。
---
springboot拦截器静态资源
Spring Boot对静态资源的拦截器支持是通过WebMvcConfigurerAdapter类实现的。默认情况下,Spring Boot会自动配置静态资源的处理,并且提供了一组默认的静态资源映射规则。这些规则包括以下路径:
1. classpath:/META-INF/resources
2. classpath:/resources
3. classpath:/static
4. classpath:/public
如果你想自定义静态资源的映射规则,可以继承WebMvcConfigurerAdapter类,并覆盖其中的addResourceHandlers()方法。通过添加自定义的资源处理器和资源映射规则,你可以实现对静态资源的拦截器处理。
阅读全文
相关推荐














