JavaWeb 过滤器

过滤器

1. 简介

  • 定义:

    一个可以截取用户端的请求与响应信息,并对这些信息过滤的服务器端的组件

2. 工作原理

这里写图片描述

3. 生命周期

这里写图片描述

4. 三个方法

  • init()

    ​ 这是过滤器的初始化方法,Web 容器创建过滤器实例后将调用该方法,该方法可以读取 web.xml 文件中过滤器的参数

  • doFilter()

    ​ 该方法完成实际的过滤操作,当用户请求访问与过滤器关联的 URL 时,Web 容器将先调用过滤器的 doFilter 方法。

    ​ FilterChain 参数可以调用 chain.doFilter 方法,将请求传给下一个过滤器(或目标资源),或利用转发、重定向将请求转发到其他资源

  • destroy()

    ​ Web 容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源

5. web.xml 配置

    <filter>
        <filter-name>Filter的名字</filter-name>
        <filter-class>Filter的类名称</filter-class>
        <!-- 初始化参数 -->
        <init-param>
            <param-name>参数名称</param-name>
            <param-value>参数的值</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Filter的名字</filter-name>
        <url-pattern>URL</url-pattern>
        <!-- 零对或多对 -->
        <!-- 可选值为:REQUEST|INCLUDE|FORWARD|ERROR -->
        <!-- 未设定默认为REQUEST -->
        <dispatcher></dispatcher>
    </filter-mapping>

6. 过滤器链

  • 定义

    ​ 针对一个用户请求,过滤器有多个,服务器会按照 web.xml 中过滤器定义的先后顺序组装成一条链

    • 执行顺序

    这里写图片描述

7. 分类

  • Servlet2.5

    1. QUEST

    ​ 用户直接访问页面时,Web 容器将会调用过滤器

    1. INCLUDE

    ​ 目标资源是通过 RequestDispatcher 的 forward 访问时,该过滤器将被调用

    1. FORWARD

    ​ 目标资源是通过 RequestDispatcher 的 include 访问时,该过滤器将被调用

    1. ERROR

    ​ 目标资源是通过声明式异常处理机制调用时,过滤器将被调用

  • Servlet3.0新增

    ASYNC

    ​ 支持异步处理

8. 应用场景

  1. 对用户请求进行统一认证
  2. 编码转换
  3. 对用户发送的数据进行过滤替换
  4. 转换图像格式
  5. 对响应的内容进行压缩

猜你喜欢

转载自blog.csdn.net/liyuanyue2017/article/details/81513275
今日推荐