1. 过滤器简介
定义:
过滤器是 一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。
2.过滤器的工作原理和生命周期
2.1 过滤器的工作原理:
2.2 过滤器的生命周期:
其中:
(1)init()方法:过滤器的初始化方法,web容器创建过滤器实例后将调用这个方法。这个方法中可以读取web.xml文件中过滤器参数。
(2)doFilter()方法:这个方法完成实际的过滤操作。这个地方是过滤器的核心方法。当用户请求访问与过滤器关联的URL时,Web容器将先调用过滤器的doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发、重定向将请求转发到其他资源。
(3)destroy()方法:web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。(大多数情况下用不到)。
过滤器的配置
3. 过滤器链
服务器会按照web.xml中过滤器定义的先后顺序组装成一条链。
4. 过滤器分类
Serverlet2.5提供了四中类型过滤器:REQUEST、FORWARD、INCLUDE、ERROR。
(1)REQUEST:用户直接访问页面时,Web容器将会调用过滤器。
(2)FORWARD:目标资源是通过RequestDispatcher的forward访问时,该过滤器将被调用。
(3)INCLUDE:目标资源是通过RequestDispatcher的inlude方法调用时,过滤器将被调用。
(4)ERROR:目标资源是通过声明式异常处理机制调用时,过滤器将被调用。
Servlet3.0 新增ASYNC过滤器,支持异步处理。
其中,@WebFilter用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。
6. 过滤器在实际 项目中的应用场景
(1)对用户请求进行统一认证。
(2)编码转换。
(3)对用户发送的数据进行过滤替换。
(4)转换图像格式。
(5)对响应的内容进行压缩。