chap05-过滤器和监听器_第1页
chap05-过滤器和监听器_第2页
chap05-过滤器和监听器_第3页
chap05-过滤器和监听器_第4页
chap05-过滤器和监听器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章过滤器和监听器

主要内容过滤器

1.监听器

2.案例3.5.1过滤器过滤器概念Servlet过滤器是在Servlet2.3规范中定义的,它是一种可以插入的Web组件,能够对Web服务器接收到的客户端请求和向客户端发出的响应进行拦截过滤,过滤器支持对Servlet程序和JSP页面的基本请求处理功能。过滤器工作流程Servlet过滤器本身不产生请求和响应,它只提供过滤作用。当Web请求发起时,Web服务器首先判断是否存在过滤器和这个请求的目标资源相关,如果存在关联Web服务器将把请求交给过滤器去处理,在过滤器中可以对请求的内容做出改变,然后再将请求转交给被请求的目标资源。当被请求的资源做出响应时,Web服务器同样会将响应先转发给过滤器,在过滤器中可以对响应做出处理,然后再将响应发送给客户端。5.1过滤器Filter接口

所有的Servlet过滤器类都必须实现javax.servlet.filter接口,该接口中定义了3个过滤器必须实现的方法(1)publicvoidinit(FilterConfigfilterConfig):过滤器的初始化方法(2)publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain):用于完成实际的过滤操作,(3)publicvoiddestroy():过滤器在即将被销毁时执行这个方法5.1过滤器过滤器开发步骤(1)创建一个实现了javax.servlet.Filter接口的类(2)重写类中的init(FilterConfigfilterConfig)方法,该方法中一般编写初始化Filter需要执行的代码。(3)重写类中的方法doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain),该方法中编写实现过滤操作的代码。(4)重写类中的destroy()方法,大多数简单过滤器为此方法提供一个空实现。(5)针对被访问的目标Web组件(Servlet程序或者JSP页面)注册过滤器,在部署描述文件web.xml中使用<filter-apping>和<filter>元素对过滤器进行配置。5.1过滤器过滤器配置

过滤器配置需要用到部署描述符文件web.xml的两个元素<filter>和<filter-mapping>。<filter>元素向Web应用注册一个过滤器对象,<filter-mapping>元素指定该过滤器对象所要过滤Web组件的URL。(1)<filter>元素<filter>元素位于部署描述符文件web.xml的前部,所有<filter-mapping>、<servlet>或<servlet-mapping>元素之前。<filter-name>:这是一个必需的元素,它给过滤器分配一个选定的名字。<filter-class>:这是一个必需的元素,它指定过滤器实现类的完全限定名即类的全名。<init-param>:这是一个可选的元素,它定义可利用FilterConfig的getInitParameter方法读取的初始化参数。

5.1过滤器过滤器配置(续)(2)<filter-mapping>元素<filter-mapping>元素位于web.xml文件中<filter>元素之后,<serlvet>元素之前。<filter-mapping>元素常用的子元素如下:<filter-name>:这个一个必需的元素,该名称必须与用<filter>元素中声明过的过滤器名称相匹配。<url-pattern>:此元素声明一个以斜杠/开始的模式,它指定过滤器应用的URL。

5.1过滤器例程:使用过滤器过滤未登录用户或者登录失败用户使其重新返回到登录页面登录。程序为login.jsp、LoginServlet.java、LoginFilter.java和index.jsp。

LoginFilter.java配置代码LoginServlet.java配置代码5.1过滤器过滤器执行流程5.2监听器监听器概念监听器是一个实现了某一特定接口的普通Java类,该类专门用于监听某一特定Java对象的方法调用或属性改变事件,当被监听对象发生上述事件后,监听器某个方法将立即被执行而做出相应的动作或者反应。监听的事件源ServletContext,HttpSession和ServletRequest这三个作用域对象5.2监听器监听器接口

ServletContext对象监听器接口ServletContextListener是用来监听Web应用程序生命周期的监听器接口ServletContextAttributeListener是监听ServletContext对象中属性改变的监听器接口监听接口方法说明ServletContextListenerpublicvoidcontextInitialized(ServletContextEventsce)在Web应用程序启动初始化后调用该方法,一般用来实现应用程序资源的准备工作publicvoidcontextDestroyed(ServletContextEventsce)在Web应用程序即将结束销毁前调用该方法,一般用来实现释放应用程序资源的工作ServletContextAttributeListenerpublicvoidattributeAdded(ServletContextAttributeEventscab)当ServletContext对象中属性增加时调用该方法publicvoidattributeRemoved(ServletContextAttributeEventscab)当ServletContext对象中属性被删除时调用该方法publicvoidattributeReplaced(ServletContextAttributeEventscab)当ServletContext对象中属性值被改变时调用该方法5.2监听器监听器接口(续)

HttpSession对象监听器接口HttpSessionListener是用来监听会话对象生命周期的监听器接口HttpSessionAttributeListener是用来监听会话对象属性改变的监听器接口HttpSessionBindingListener是用来监听会话对象的对象绑定监听器接口HttpSessionActivationListener是用来监听会话对象的对象迁移监听器接口

HttpSession对象监听器接口监听接口方法说明HttpSessionListenerpublicvoidsessionCreated(HttpSessionEventse)当HttpSession对象创建时执行该方法publicvoidsessionDestroyed(HttpSessionEventse)当HttpSession对象销毁时执行该方法HttpSessionAttributeListenerpublicvoidattributeAdded(HttpSessionBindingEventse)当HttpSession对象中属性增加时调用该方法publicvoidattributeRemoved(HttpSessionBindingEventse)当HttpSession对象中属性被删除时调用该方法publicvoidattributeReplaced(HttpSessionBindingEventse)当HttpSession对象中属性值被改变时调用该方法HttpSessionBindingListenerpublicvoidvalueBound(HttpSessionBindingEventevent)当实现HttpSessionBindingListener接口的属性对象被加入HttpSession时调用该方法publicvoidvalueUnbound(HttpSessionBindingEventevent)当实现HttpSessionBindingListener接口的属性对象从HttpSession对象中移除时调用该方法HttpSessionActivationListenerpublicvoidsessionDidActivate(HttpSessionEventse)当HttpSession对象要从一个服务器迁移至另一个服务器后,就会对所有属性对象作反序列化,此时会调用该方法publicvoidsessionWillPassivate(HttpSessionEventse)当HttpSession对象要从一个服务器迁移至另一个服务器时,必须先在原来的服务器上序列化HttpSession对象中所有的属性对象,此时会调用该方法5.2监听器监听器接口(续)ServletRequest对象监听器接口ServletRequestListener是用来监听HttpServletRequest生命周期的监听器接口ServletRequestAttributeListener是用来监听ServletRequest对象中属性改变的监听器接口监听接口方法说明ServletRequestListenerpublicvoidrequestInitialized(ServletRequestEventsce)在ServletRequest对象生成时调用该方法publicvoidrequestDestroyed(ServletRequesttEventsce)在ServletRequest对象即将结束销毁前调用该方法ServletRequestAttributeListenerpublicvoidattributeAdded(ServletRequestAttributeEventscab)当ServletRequest对象中属性增加时调用该方法publicvoidattributeRemoved(ServletRequestAttributeEventscab)当ServletRequest对象中属性被删除时调用该方法publicvoidattributeReplaced(ServletRequestAttributeEventscab)当ServletRequest对象中属性值被改变时调用该方法5.2监听器监听器开发(1)创建相应的监听器类,根据实际需要实现相应的接口并覆盖其中相应的抽象方法。

publicclassXxxxxListennerimplementsHttpSessionListener{ publicvoidsessionCreated(HttpSessionEventarg0){ ........................; ........................; } publicvoidsessionDestroyed(HttpSessionEventarg0){ ........................; ........................; }}5.2监听器监听器开发(续)(2)在部署描述文件web.xml中使用<listener>元素配置监听器。实现接口HttpSessionBindingListener接口的监听器例外,不需要在web.xml文件中配置<listener> <listener-class> xxxPackage.xxxPackage.XxxxxListener </listener-class></listener>5.2监听器例程:演示监听器的开发步骤,监听Web应用的初始化和销毁。MyServletCon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论