码迷,mamicode.com
首页 > 其他好文 > 详细

过滤器

时间:2015-08-08 22:38:15      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是过滤器

  过滤器是Servlet2.3规范中定义的一种小型的、可插入的Web组件。用来拦截Servlet容器的请求和响应过程,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。

  过滤器通常是封装了一些功能的Web组件,这些功能很重要,但对于处理客户请求或发送响应来说不是决定性的。

  典型的应用包括记录请求和响应的数据、管理会话属性等。

2.如何编写过滤器

  1.编写一个Java类,实现Filter接口

  2.在doFilter方法中实现拦截处理逻辑

  3.将过滤器添加到Web程序中

  4.把过滤器和Web应用一起打包部署

3.编写一个java类实现Filter接口

  过滤器API有3个常用接口,位于javax.Servlet包中。

  Filter、FilterChain、FilterConfig

  编程中,过滤器类要实现Filter接口

  该接口中包含三个必须实现的方法

    void init(FilterConfig filterConfig)

    void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)

    void destroy()

4.实现拦截处理逻辑

  public class CommentFilter implements Filter{

    /**创建实例后,调用init方法,只执行一次*/

    public void init(FilterConfig filterConfig){//... ...}

    /**容器调用doFilter方法处理请求*/

    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException ServletException{\

      //...

      chain.doFilter(request,response);

    }

    /**容器删除过滤器实例之前调用该方法,只执行一次*/

    public void destory(){ ... ...}

  }

5.将过滤器添加到Web应用中

  修改web.xml文件,增加注册过滤器的节点  

  <filter>
    <filter-name>filter1</filter-name>
    <filter-class>web.xxxServlet</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/xxx</url-pattern>
  </filter-mapping>

6.过滤器和Web应用一起打包部署

  与Web应用程序一起部署过滤器时,只需把过滤器类和其他Web组件类包括在一起,把web.xml文件(连同过滤器注册)放进Web应用程序结构中,Servlet容器将处理之后的其它所有事情

7.过滤器的优先级

  如果有多个过滤器都满足过滤条件,则容器依据<filter-mapping>的先后顺序来调用各个过滤器

8.过滤器的初始化参数

  容器启动之后,会创建过滤器实例

  接下来,容器会调用过滤器的init方法,而容器会事先创建FilterConfig对象。该对象可以访问在web.xml文件中配置的一些参数

  这些在web.xml文件中存储,由FilterConfig对象读取,在执行init方法时能够访问的参数值,叫初始化参数

  通过这些初始化参数可以方便快捷的配置及修改一些辅助参数

9.初始化参数的配置

  <filter>
    <filter-name>filter1</filter-name>
    <filter-class>web.xxxServlet</filter-class>
    <!-- 初始化参数 -->
    <init-param>
      <param-name>illegalStr</param-name>
      <param-value>xxx</param-value>
    </init-param>
  </filter>

10.读取初始化参数

  使用FilterConfig对象可以读取在web.xml中配置的初始化参数

  String config.getInitParamter("illegaStr")

11.过滤器的优点

  实现代码的“可插拔性”,即增加或减少某个功能模块不会影响程序的正常执行

  可以将多个相同处理逻辑的模块集中写在过滤器里面,方便代码的维护

过滤器

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4714059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!