过滤器filter的原理(转)

在学习web.xml元素标签时,看到过滤器filter的相关配置,不是很理解,于是网上查询了一番资料,发现一篇博文,这边转载过来,方便以后温习。http://www.cnblogs.com/xdp-gacl/p/3948353.html

filter是什么:

  Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

下面是j2ee API中介绍的用武之处:

  • Examples that have been identified for this design are:

    1. Authentication Filters (认证过滤器)
    2. Logging and Auditing Filters (日志和审计过滤器)
    3. Image conversion Filters (图像转换过滤器)
    4. Data compression Filters (数据压缩过滤器)
    5. Encryption Filters (加密过滤器)
    6. Tokenizing Filters (分词过滤器)
    7. Filters that trigger resource access events (触发资源访问控制时间过滤器)
    8. XSL/T filters
    9. Mime-type chain Filter  (内容类型过滤器)

  Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,如下所示:

filter是如何实现过滤的:

  Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:

  1. 调用目标资源之前,让一段代码执行。
  2. 是否调用目标资源(即是否让用户访问web资源)。
  3. 调用目标资源之后,让一段代码执行。

  web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对 象,它也提供了一个doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方 法,即web资源就会被访问,否则web资源不会被访问。

Filter链:

  在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。
  web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter,当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源。

Filter的生命周期(与Servlet类似):

  Filter的创建:

    Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作filter对象只会创建一次,init方法也只会执行一次。通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。

  Filter的销毁:

    Web容器调用destroy方法销毁Filter。destroy方法在Filter的生命周期中仅执行一次。在destroy方法中,可以释放过滤器使用的资源。

  FilterConfig接口:

    用户在配置filter时,可以使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。因此开发人员在编写filter时,通过filterConfig对象的方法,就可获得:
  String getFilterName():得到filter的名称。
  String getInitParameter(String name): 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null.
  Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。
  public ServletContext getServletContext():返回Servlet上下文对象的引用。

Filter的部署(2步):

  1.注册Filter(在web.xml文件中注册)

  2.映射Filter(在web.xml文件中进行映射)

时间: 2024-10-03 13:10:26

过滤器filter的原理(转)的相关文章

Java过滤器Filter的原理及配置_学习笔记

Filter中文意思为过滤器.顾名思义,过滤器可在浏览器以及目标资源之间起到一个过滤的作用.例如:水净化器,可以看成是生活中的一个过滤器,他可以将污水中的杂质过滤,从而使进入的污水变成净水. 对于WEB应用来说,过滤器是一个驻留在服务器中的WEB组件,他可以截取客户端和WEB资源之间的请求和响应信息. WEB资源可能包括Servlet.JSP.HTML页面等 创建一个新的Filter文件 配置web.xml文件.Filter的配置和Servlet的配置很像,但是Filter的<url-patte

Servlet过滤器介绍之原理分析

zhangjunhd 的BLOG   写留言去学院学习发消息 加友情链接进家园 加好友 博客统计信息 51CTO博客之星 用户名:zhangjunhd文章数:110 评论数:858访问量:1923464无忧币:6720博客积分:6145博客等级:8注册日期:2007-02-03 热门专题更多>> Linux系统基础之菜鸟进阶 阅读量:2359 ARM驱动之Linux驱动程序设计入门 阅读量:2252 HTML5入门教程 阅读量:1392 深入浅出学MySQL 阅读量:1558 热门文章 基于T

Servlet过滤器--Filter

一.定义: 是一种特殊的Servlet,可以用来对请求进行过滤,多个过滤器可以形成过滤链: 当请求发送到servlet之前,可以用过滤器截获和处理请求,在servlet结束工作之后,在响应发回给客户之前,可以用过滤器处理响应. 实现javax.servlet.Filter接口里面的 init,doFilter.destroy等抽象方法,是过滤器的生命周期. 过滤器的工作原理: 二.Web.xml中的配置声明 根据servlet2.3规范,filter执行是按照 filter-mapping 先后

监听器listener&amp;过滤器filter

Servlet技术规范 描述三种技术 : Servlet(服务器小程序) .Filter(过滤器) .Listener(监听器) Filter运行在服务器端,对服务器端web资源的访问 进行拦截,起到过滤的作用 Servlet API中 定义接口 Filter,用户只需要编写程序实现Filter接口,完成过滤器编写 Filter快速入门1.编写类 实现 Filter接口2.在服务器端注册 Filter (配置拦截哪个web资源) ----- web.xml   <!-- 注册过滤器 --> 

过滤器Filter详解

Filter称之为过滤器: WEB开发人员通过Filter技术,对web服务器管理的所有web资源: 例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能. 例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Filter简介: Servlet API中提供了一个Filter接口,开发web应用时, 如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter. 通过Filter技术,开发人员可以实现用户

java过滤器Filter笔记

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Fi

java_day30_javaWeb三大组件之过滤器Filter

过滤器filter 一.简介及原理 1.Filter也称之为过滤器,管理web服务器的所有web资源,如jsp,servlet,html,图片等.如实现URL级别的权限访问控制 2.Filter接口中有一个doFilter方法,配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,request请求和response响应都会进入配置的filter,根据filter内的代码决定客户端请求到的服务器的资源,如拦截,

JavaEE---过滤器Filter ,过滤器Filter的实现与部署,编码案例+权限案例

过滤器是一种Web组件,用于对客户端发送的请求信息和返回给客户端的响应信息进行处理.  过滤器Filter的工作原理 ---通过使用过滤器,可以拦截客户端的请求和响应,查看 .提取或者以某种方式操作正在客户端和服务器之间进行交换的数据. ---通过使用过滤器,可以对Web组件的前期处理和后期处理进行控制. ---过滤器可以有多个,以构成一个过滤器链.Servlet容器会根据过滤器的配置情况来决定过滤器的调用次序. 过滤器Filter的实现和部署 ---必须实现接口javax.serclet.Fi

【JavaWeb学习】过滤器Filter

一.简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter技