过滤器和监听器.docxVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

过滤器和监听器

1、过滤器

过滤器概念

Servlet过滤器是在Servlet2.3标准中定义的,它是一种可以插入的Web组件,能够对Web效劳器接收到的客户端请求和向客户端发出的响应进行拦截过滤,过滤器支持对Servlet程序和JSP页面的根本请求处理功能。Servlet过滤器是Servlet的一种特殊用法,主要用来完成一些通用的操作,如性能评测、用户验证、字符替换、编码设置、详细的日志、对响应数据进行压缩处理、改变图像文件、对用户数据的平安性处理等。Servlet/JSP提供的过滤器机制,其实是设计模式中InterceptorFilter模式的实现。

介于service()方法运行前、后的需求

过滤器工作流程

Servlet过滤器本身不产生请求和响应,它只提供过滤作用。当Web请求发起时,Web效劳器首先判断是否存在过滤器和这个请求的目标资源相关,如果存在关联Web效劳器将把请求交给过滤器去处理,在过滤器中可以对请求的内容做出改变〔可以修改request对象的头部和request对象的内容〕,然后再将请求转交给被请求的目标资源。当被请求的资源做出响应时,Web效劳器同样会将响应先转发给过滤器,在过滤器中可以对响应做出处理〔可以修改response对象的头部和response对象的内容〕,然后再将响应发送给客户端。

过滤器链

在一个Web应用程序中可以配置多个过滤器,从而形成过滤器链。FilterChain〔过滤器链〕由Servlet容器提供,表示资源请求调用时过滤器的链表。过滤器使用FilterChain来调用链表里的下一个过滤器。FilterChain的实现就是将多个过滤器类在web.xml文件中进行设置,只要在过滤器类中调用doFilter方法,Servlet就自动按web.xml文件中配置过滤器〔filter-mapping〕的顺序依次执行。在请求目标资源时,过滤器链中的过滤器依次对请求作出处理,在接收到响应时再按照相反的顺序对响应做出处理。过滤器链的工作流程图如下:

将效劳需求设计为可插拔的元件

在请求转发时应用过滤器

Filter接口

所有的Servlet过滤器类都必须实现接口,该接口中定义了3个过滤器必须实现的方法。

〔1〕publicvoidinit(FilterConfigfilterConfig):过滤器的初始化方法,通常用来做资源的初始化工作。Servlet容器在创立过滤器实例时调用这个方法,在这个方法中可以利用FilterConfig对象的getInitParameter方法读出在web.xml文件中为该过滤器配置的初始化参数。

〔2〕publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain):用于完成实际的过滤操作,当客户请求访问与过滤器关联的URL时,Web效劳器将先调用过滤器的这个方法。FilterChain对象负责将请求和响应向后传递。

〔3〕publicvoiddestroy():过滤器在即将被销毁时执行这个方法,通常用于释放过滤器申请的资源。

过滤器开发步骤

〔1〕创立一个实现了接口的类。

〔2〕实现init(FilterConfigfilterConfig)方法,该方法中一般编写初始化Filter需要执行的代码。

〔3〕实现方法doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain),该方法中编写实现过滤操作的代码,调用FilterChain参数的doFilter(request,response)方法。

〔4〕实现destroy()方法,大多数简单过滤器为此方法提供一个空实现。

〔5〕针对被访问的目标Web组件〔Servlet程序或者JSP页面〕注册过滤器:在部署描述文件web.xml中使用filter和filter-apping元素对过滤器进行配置;或使用@WebFilter注解进行配置。

过滤器配置

配置需要用到部署描述符文件web.xml

过滤器配置需要用到部署描述符文件web.xml的两个元素filter和filter-mapping。filter元素向Web应用注册一个过滤器对象,filter-mapping元素指定该过滤器对象所要过滤Web组件的URL。

〔1〕filter元素

filter元素位于部署描述符文件web.xml的前部,相同名字的servlet-mapping元素之前。

filter-name:这是一个必需的元素,它给过滤器分配一个选定的名字。

filter-class:这是一个必需的元素,它指定过滤器实现类的完全限定名即类的全名。

文档评论(0)

199****4744 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档