Servlet 过滤器(Filter) 是 Java Web 开发中 servlet 规范提供的一种拦截和处理请求/响应的组件,用于在请求到达 Servlet(或 JSP)之前,以及响应返回客户端之前,进行统一的处理。
Servlet 过滤器是:
可以理解为一个“请求安检通道”。
常见用途包括:
Servlet 容器负责管理 Filter:
public interface Filter {
void init(FilterConfig filterConfig);
void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain);
void destroy();
}
FilterChain:用于放行请求chain.doFilter(request, response);
@WebFilter("/*")
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
chain.doFilter(req, resp);
}
}
@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>
| 对比项 | Filter | Interceptor |
|---|---|---|
| 所属 | Servlet 规范 | Spring |
| 作用范围 | 所有请求 | Spring MVC 请求 |
| 执行顺序 | 更早 | 更晚 |
Servlet 过滤器是对请求和响应进行统一预处理和后处理的组件,是 Web 层非常重要的通用处理机制。
如果你愿意,我也可以帮你画一张请求流程图或对比 Filter / Listener / Servlet 的区别。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。