Java Servlet 过滤器(Filter) 是 Java Web 开发中用于在请求到达 Servlet 之前或响应返回客户端之前进行统一处理的组件。
Servlet 过滤器是 javax.servlet.Filter 接口的实现类,它可以:
可以理解为:请求和响应之间的“关卡”
常见用途包括:
public interface Filter {
void init(FilterConfig config);
void doFilter(ServletRequest req, ServletResponse res, FilterChain chain);
void destroy();
}
init过滤器初始化时调用(只执行一次)
doFilter(核心)chain.doFilter() 才会继续往下走destroy过滤器销毁时调用
@WebFilter("/*")
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, res);
}
}
@WebFilter(urlPatterns = "/*")
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.example.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
请求 → Filter1 → Filter2 → Servlet → Filter2 → Filter1 → 响应
| 对比项 | Filter | Interceptor |
|---|---|---|
| 所属 | Servlet 规范 | Spring |
| 作用范围 | 所有请求 | Spring MVC 请求 |
| 依赖 | 不依赖框架 | 依赖 Spring |
如果你愿意,我也可以用 Spring Boot 示例 或 登录拦截实战 来进一步说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。