过滤器:是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。
过滤器的工作原理
Web容器启动即加载过滤器;
![](https://img.haomeiwen.com/i4181927/913b84a8de7e0ca7.png)
过滤器的生命周期(分为4种)
![](https://img.haomeiwen.com/i4181927/4346422bafd1f67e.png)
-
init():这是过滤器额初始化方法,Web容器创建过滤器实例后将调用这个方法。这个方法中可以读取web.xml文件中过滤器的参数。
-
doFilter():这个方法完成实际的过滤操作。这个地方是过滤的核心方法。当用户请求访问与过滤器关联的URL时,Web容器将先调用过滤器的doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发、重定向将请求转发到其他资源。
-
destroy():Web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。(大多数情况用不到)
![](https://img.haomeiwen.com/i4181927/4fa1ab5fbdd1508b.png)
过滤器链:服务器会按照web.xml中过滤器定义的先后顺序组装成一条链。
![](https://img.haomeiwen.com/i4181927/b6bc00bf31989fb8.png)
<error-page>
<error-code>404</error-code>
<location>error.jsp</location>
</error-page>
WebFilter
@WebFilter用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。
![](https://img.haomeiwen.com/i4181927/c9118725ff59a835.png)
![](https://img.haomeiwen.com/i4181927/915ed1d657d34ff0.png)
过滤器在实际项目中的应用场景
1、对用户请求进行统一认证
2、编码转换
3、对用户发送的数据进行过滤替换
4、转换图像格式
5、对响应的内容进行压缩
网友评论