Filter小结

JAVA学习网 2017-07-31 08:26:02
  • FIlter概述
    • 过滤请求与过滤响应
  • Filter的应用场景
    • 统一解决乱码问题
  • 开发Filter的步骤
    • 创建一个类实现Filter接口,重写doFilter方法
    • 配置web.xml定义执行行里开发的Filter(与Servlet的配置类似)

      <!-- 统一处理全站编码问题,post提交请求数据乱码问题 -->

      <filter>

              <filter-name>Demo3Filter</filter-name>

              <filter-class>com.itheima.filterconfig.Demo3Filter</filter-class>

              <init-param>

                      <param-name>charset</param-name>

                      <param-value>utf-8</param-value>

              </init-param>

      </filter>

      <!-- 要求过滤器过滤所有的请求 -->

      <filter-mapping>

              <filter-name>Demo3Filter</filter-name>

              <url-pattern>/*</url-pattern>

      </filter-mapping>

    • 在Filter中获取参数数据
      • String getInitParameter(String name)

        获取web.xml配置文件中当前Filter配置的参数,根据指定参数名称获取参数值

      • Enumeration getInitParameterNames()

        获取web.xml配置文件中当前Filter配置的参数,获取所有参数名称的列表

  • 过滤器请求的url路径配置
    • 映射的方式有两种方式
      • 精确匹配:配置与用户的访问一模一样
        • 多个url-pattern
        • 多个filtert-mapping
      • 模糊匹配
        • 前缀通配符匹配

          必须以"/ "开头,以"* "结尾(*前面必须要有/)

        • 后缀通配符匹配

          必须以"*"开头,以"."扩展的方式

    • 注意事项
      • 当前匹配模式一样的时候,匹配相似度越高优先级越高
      • 精确匹配优于模糊匹配
      • 模糊匹配中,前缀匹配优先于后缀匹配
  • 过滤器链:就是一个Servlet被多个过滤器,过个过滤器形成一个过滤链
  • 过滤方式:定义过滤器拦截什么的请求,就是对象不同请求分类进行过滤的方式就是拦截方式
    • 拦截方式的使用步骤

            在web.xml的配置方式,如果不配置就采用默认的配置request

  • 格式

    <filter-mapping>

            <filter-name>Chain1Filter</filter-name>

            <url-pattern>/demo1</url-pattern>

            <dispatcher>REQUEST</dispatcher>

    </filter-mapping>

  • 修改拦截方式配置,修改dispatcher

 

REQUEST

就是过滤直接访问 url或者页面跳转重定向

FORWARD

只过滤请求转发的页面跳转

INCLUDE

只过滤动态包含的页面的过滤

ERROR

过滤全局配置的友好页面的过滤

    • 注意:dipatcher如果没有配置,采用默认拦截方式,但是如果配置采用配置的拦截的方式,如果只配置了FORWARD就不具有默认的REQUEST.如果想一起具有就需要都配置.
阅读(790) 评论(0)