结论先行:一般可以,但取决于你用的是哪个框架、拦截器的实现方式以及静态资源的访问路径配置。
下面按常见场景说明。
Spring MVC 的拦截器(HandlerInterceptor)默认不会拦截静态资源。
原因:
/js/**、/css/**、/**/*.html 等)ResourceHttpRequestHandler 处理DispatcherServlet 的 HandlerMappingHandlerInterceptor 不会生效/** 拦截@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**"); // 包括静态资源
}
但仍然是否生效取决于资源是否被 DispatcherServlet 处理。
如:
spring.mvc.static-path-pattern=/static/**
或自定义 WebMvcConfigurer 时处理不当。
@GetMapping("/static/test.js")
public void test() {}
✅ 会被拦截(因为走了 DispatcherServlet)。
原因:
@WebFilter("/*")
public class MyFilter implements Filter {
}
⚠️ 注意:
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/api/**")
.excludePathPatterns(
"/css/**",
"/js/**",
"/images/**",
"/**/*.html"
);
| 技术 | 是否拦截静态资源 | 说明 |
|---|---|---|
| HandlerInterceptor | ❌ 默认不拦截 | 除非特殊配置 |
| Filter | ✅ 拦截 | 所有请求 |
| Spring Security | ✅ 拦截 | 安全过滤 |
| 自己写 Controller 返回静态资源 | ✅ 拦截 | 属于业务请求 |
Spring MVC 拦截器默认不拦截静态资源;
如果你看到它被拦截了,多半是 Filter 或路径配置问题。
如果你能告诉我:
我可以帮你精确判断,并给出最优配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。