《javaweb程序设计第7章.ppt》由会员分享,可在线阅读,更多相关《javaweb程序设计第7章.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7 7章章 监听器监听器Listener Listener Java WebJava Web程序设计基础程序设计基础7.1 Listener7.1 Listener概述概述n什么是什么是Listener Listener nListenerListener的使用的使用7.1.1 7.1.1 什么是什么是Listener Listener nWeb应用程序员可以利用应用程序员可以利用Listener接接口,监听在口,监听在Container中某一个执行程中某一个执行程序,并且根据其应用程序的需求做出序,并且根据其应用程序的需求做出适当的响应适当的响应7.1.2 Listener7.1.2 L
2、istener的使用的使用n使用使用ListenerListener需要实现相应的需要实现相应的ListenerListener接口接口 nListenerListener需要在需要在web.xmlweb.xml中配置才生效中配置才生效 7.2 Listener7.2 Listener的分类的分类n监听对象的创建与销毁监听对象的创建与销毁 n实例:监听实例:监听SessionSession、RequestRequest与与ServletContextServletContextn监听对象的属性变化监听对象的属性变化 n监听监听SessionSession内的对象内的对象 Listener Li
3、stener 接口简介接口简介Listener 接口简介接口简介Listener接口接口Event类类ServletContextListenerServletContextEventServletContextAttributeListenerServletContextAttributeEventHttpSessionListenerHttpSessionEventHttpSessionActivationListenerHttpSessionBindingListenerHttpSessionBindingEventHttpSessionAttributeListenerServletR
4、equestListenerServletRequestEventServletRequestAttributeListenerServletRequestAttributeEvent7.2.1 7.2.1 监听对象的创建与销毁监听对象的创建与销毁 nHttpSessionListenerHttpSessionListener:监听监听SessionSession的创建与销毁的创建与销毁nServleContextListenerServleContextListener:监听监听ContextContext的创建与销毁的创建与销毁nServletRequestListenerServletR
5、equestListener:监听监听requestrequest的创建与销毁的创建与销毁 HttpSessionListenerHttpSessionListenern和和ServletContextListenerServletContextListener接口类似,接口类似,当有当有SessionSession产生或是消失,会自动调产生或是消失,会自动调用:用:sessionCreatedsessionCreated和和sessionDestroyedsessionDestroyed方法方法ServletContextListenerServletContextListenern一个实现
6、一个实现ServletContextListenerServletContextListener接接口的程序,当口的程序,当ContainerContainer启动时,程序启动时,程序会自动开始监听的工作,它首先会调会自动开始监听的工作,它首先会调用用contextInitialized()contextInitialized()接收对应的接收对应的javax.servlet.ServletContextEventjavax.servlet.ServletContextEvent事件事件ServletRequestListenerServletRequestListenernServletRe
7、questListenerServletRequestListener是是Servlet Servlet 2.42.4的新功能的新功能n该接口和该接口和ServletContextListenerServletContextListener接接口类似,当有请求产生或消失,会自口类似,当有请求产生或消失,会自动调用动调用requestInitialized()requestInitialized()和和requestDestroyed().requestDestroyed().7.2.2 7.2.2 实例:实例:监听监听SessionSession、RequestRequest与与Servlet
8、ContextServletContextnJavaJava中的类可以实现多个接口,因此中的类可以实现多个接口,因此实现实现ListenerListener时可以用一个类实现多时可以用一个类实现多个个ListenerListener接口。这样的好处是多种接口。这样的好处是多种ListenerListener一块儿工作,使用同一个类一块儿工作,使用同一个类的资源的资源 public class ListenerTest implements HttpSessionListener,ServletContextListener,ServletRequestListener 7.2.3 7.2.3
9、监听对象的属性变化监听对象的属性变化 nListenerListener用于监听用于监听sessionsession、requestrequest、contextcontext的属性变化的属性变化 ServletContextAttributeListenerServletContextAttributeListenerHttpSessionAttributeListenerHttpSessionAttributeListenerServletRequestAttributeListener ServletRequestAttributeListener ServletContextAttri
10、buteListenerServletContextAttributeListenern一个实现一个实现ServletContextAttributeListenerServletContextAttributeListener接接口的程序,它能够监听口的程序,它能够监听ApplicationApplication范范围的变化围的变化HttpSessionAttributeListenerHttpSessionAttributeListenern和和ServletContextAttributeListenerServletContextAttributeListener接口接口类似,只不过该
11、接口是监听类似,只不过该接口是监听SessionSession范围的范围的变化的变化的nHttpSessionAttributeListenerHttpSessionAttributeListener和和HttpSessionBindingListenerHttpSessionBindingListener两个功能很两个功能很相似,但是也有一些不同点:相似,但是也有一些不同点:HttpSessionAttributeListenerHttpSessionAttributeListener需要在需要在web.xmlweb.xml中设定。中设定。HttpSessionAttributeListen
12、erHttpSessionAttributeListener监听监听webweb站点站点所有所有SessionSession范围的变化;而范围的变化;而HttpSessionBindingListenerHttpSessionBindingListener只单纯监听实现只单纯监听实现它的类它的类ServletRequestAttributeListenerServletRequestAttributeListenernServletRequestAttributeListenerServletRequestAttributeListener也也是是Servlet2.4Servlet2.4的新功
13、能的新功能n该接口和该接口和ServletContextAttributeListenerServletContextAttributeListener接接口功能相似,只不过该接口监听口功能相似,只不过该接口监听RequestRequest范围的变化范围的变化7.2.4 7.2.4 监听监听SessionSession内的对象内的对象 n主要包括:主要包括:HttpSessionBindingListenerHttpSessionBindingListenerHttpSessionActivationListenerHttpSessionActivationListenerHttpSessio
14、nBindingListenerHttpSessionBindingListenern当我们实现这个接口后,只要对象加当我们实现这个接口后,只要对象加入入SessionSession范围或从范围或从SessionSession范围中移范围中移除时,除时,ContainerContainer分别会自动调用下列分别会自动调用下列两个方法:两个方法:valueBound(HttpSessionBindingEvent event)valueBound(HttpSessionBindingEvent event)valueUnbound(HttpSessionBindingEvent event)va
15、lueUnbound(HttpSessionBindingEvent event)HttpSessionActivationListenerHttpSessionActivationListenern该接口主要用于:同一个该接口主要用于:同一个SessionSession转移至不转移至不同同JVMJVM的情形,例如:负载平衡的情形,例如:负载平衡(Load(Load Balancing)Balancing)机制。机制。n当当SessionSession被存储起来,并且等待转移至另被存储起来,并且等待转移至另一个一个JVMJVM,这段时间成为失效状态,若,这段时间成为失效状态,若SessionS
16、ession中的属性对象实现该接口时,中的属性对象实现该接口时,ContainerContainer会自动调用会自动调用sessionWillPassivatesessionWillPassivate方法,通知该对象方法,通知该对象的的SessionSession已变为失效状态。当已变为失效状态。当SessionSession转转移至其他移至其他JVMJVM后,它又成为有效状态,此时后,它又成为有效状态,此时ContainerContainer会自动调用会自动调用sessionDiaActivatesessionDiaActivate方法方法7.3 Listener7.3 Listener使用案例使用案例n单态登录单态登录 n显示在线用户显示在线用户 Q&AQ&A这是我,我是JWShock?