过滤器(Filter)和拦截器(Interceptor)都是用于解决项目中与请求处理、响应管理和业务逻辑控制相关问题的工具,但它们之间存在明显的区别。
基本使用
- 实现过滤器
过滤器可以使用 Servlet 3.0 提供的 @WebFilter 注解,配置过滤的 URL 规则,然后再实现 Filter 接口,重写接口中的 doFilter 方法,具体实现代码如下:
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/*")
public class TestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("执行过滤器 init() 方法。");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("开始执行过滤器 doFilter() 方法。");
// 请求放行
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("结束执行过滤器 doFilter() 方法。");
} s
@Override
public void destroy() {
System.out.println("执行过滤器 destroy() 方法。");
}
}