关于过滤器 Filter
是什么 ,以及如何在 SpringBoot
中配置过滤器
过滤器 Filter
1、 过滤器是什么?
过滤器是 Java Servlet API 的一部分,用于在请求达到目标资源(如 Servlet 或 JSP 页面)之前或在响应从目标资源返回到客户端之后进行预处理或后处理。它们可以被看作是 == 请求和响应的 “管道”== ,允许开发人员执行一些跨切割关注点的操作,如 == 编码转换、添加响应头、身份验证、日志记录 == 等。
特点
- 生命周期管理:过滤器具有初始化(init),过滤(doFilter)和销毁(destroy)的方法,这些方法分别在过滤器创建、每次请求和服务器关闭时调用。
- 执行顺序:过滤器的执行顺序是由部署描述符(web.xml)或等效的 Java 配置类中定义的过滤器映射所决定的。
- 跨容器:过滤器可以在任何实现了 Servlet 规范的容器中工作,这意味着它们可以用于任何基于 Servlet 的 Web 应用程序,而不仅仅是 Spring Boot 应用。
- 请求 / 响应处理:过滤器可以在请求到达目标资源前和响应离开容器后执行操作,这使得它们非常适合处理一些需要在所有请求中都生效的任务。
2、 过滤器的运作原理?
可以自定义去实现 java 提供的 Filter
方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;
@WebFilter(urlPatterns = "/*") public class MyFilter implements Filter {
@Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("Filter initialized"); }
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Request received at filter");
chain.doFilter(request, response);
System.out.println("Response leaving filter"); }
@Override public void destroy() { System.out.println("Filter destroyed"); } }
|