一、理解核心概念
在 Java Web 开发中,**过滤器(Filter)和拦截器(Interceptor)**是两种核心的请求处理机制。它们虽然都能对请求进行拦截和处理,但定位截然不同:
- Filter 是 Servlet 容器的"守门人",位于应用最外层
- Interceptor 是 Spring MVC 的"执法官",位于框架内部
二、Filter:Servlet 容器的第一道防线
2.1 本质与特点
Filter 是 Java Servlet 规范 定义的组件,由 Servlet 容器(如 Tomcat)直接管理,不依赖任何框架,因此具有最强的通用性。
生命周期方法:
方法 | 触发时机 | 用途 |
| 应用启动时 | 初始化配置 |
| 每次请求 | 核心处理逻辑 |
| 应用关闭时 | 资源释放 |
执行流程:
请求 → Filter1 → Filter2 → Servlet/Controller → Filter2 → Filter1 → 响应
2.2 Spring Boot 中的实现方式
方式一:注解方式(适合简单场景)
@WebFilter(urlPatterns = "/api/*", filterName = "authFilter") public class AuthFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 前置处理 System.out.println("认证检查开始"); // 放行到下一个 Filter 或目标资源 chain.doFilter(request, response); // 后置处理(响应返回时执行) System.out.println("认证检查结束"); } } // 在主类开启扫描 @SpringBootApplication public { }

