过滤器(Filter)
简介
过滤器是 Jakarta EE(原 Java EE)规范中的组件,用于拦截和处理 Web 应用中的请求和响应。常用于日志记录、权限校验、请求修改等场景。
主要特性
- 拦截 HTTP 请求和响应
- 可修改请求和响应对象
- 支持多个过滤器链式调用
- 可通过 web.xml 或注解配置
基本用法示例
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
public class LoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
System.out.println("请求 URI: " + req.getRequestURI());
chain.doFilter(request, response);
}
}
配置方式
web.xml
<filter>
<filter-name>loggingFilter</filter-name>
<filter-class>LoggingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注解
import jakarta.servlet.annotation.WebFilter;
@WebFilter("/*")
public class LoggingFilter implements Filter { ... }
常见应用
- 日志记录与审计
- 登录认证与权限校验
- 压缩与编码
- 请求/响应内容修改