摘要:本文学习了Filter的原理和使用方法。
环境
Windows 10 企业版 LTSC 21H2
Java 1.8
Tomcat 8.5.50
1 简介
Filter在浏览器和目标资源之间起到过滤的作用,可以动态地拦截请求和响应。
Filter是JavaWeb三大组件之一。
2 流程
当服务器收到请求后,先将请求交给过滤器,符合过滤条件的请求会被拦截并执行处理方法,不符合过滤条件的请求会被直接放行,交由目标服务处理。
在处理方法中可以对请求信息进行读取和修改等操作,并根据结果选择是否放行请求,放行成功的请求会交由目标服务处理,放行失败的请求会直接返回响应到客户端。
目标服务处理完成后,将响应返回到客户端之前,会被过滤器拦截响应,过滤器可以对响应信息进行读取和修改等操作,然后将响应放行到客户端。
在一个Web应用中可以部署多个过滤器,多个过滤器组成了过滤器链,请求必须经过多个过滤器后才能到达目标服务,响应必须经过和请求相同的过滤器后才能返回客户端。
3 生命周期
Filter的生命周期和Servlet类似:
- 创建:过滤器实例创建后马上调用
init()方法进行初始化操作。 - 过滤:使用
doFilter()方法对请求和响应进行处理。 - 销毁:服务器停止时调用
destroy()方法来释放资源。
4 注册
实现过滤器接口后,还需要注册过滤器才能生效,注册方式有两种:
- 通过配置文件注册,在web.xml中配置过滤器:
web.xml 1
2
3
4
5
6
7
8<filter>
<filter-name>testFilter</filter-name>
<filter-class>com.example.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>testFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> - 通过注解注册,使用
@WebFilter注解:TestFilter.java 1
2
3
4
public class TestFilter implements Filter {
...
}
5 使用
实现接口:
1 |
|
条