Servlet事件监听器

Servlet监听器是WEB应用程序事件模型的一部分,Servlet监听器用于监听一些WEB应用中重要事件的发生,监听器对象可以在事情发生前、发生后Servlet容器就会产生相应的事件, Servlet监听器用来处理这些事件。

Servlet API中定义了8个监听器,根据监听对象的类型和范围可以分为3类:
ServletContext事件监听器、HTTPSession事件监听器和ServletRequest事件监听器。8个监听器接口如下表所示。

ServletContext事件监听器



HttpSession事件监听器中的接口和方法



ServletRequest 事件监听器
对请求消息对象进行监听的接口有ServletRequestListenerServletRequestAttributeListener其中ServletRequestListener用于监听ServletRequest对象的变化,例如ServletRequest对象的创建和销毁。ServletRequestAttributeListener用于监听ServletRequest对象中属性的变化,例如属性的增加、删除和修改。ServletRequest事件监听器的接口和方法如表所示:


ServletContextListener接口
在Web应用程序启动时需要执行一些初始化任务时,可以编写实现了ServletContextListener接口的监听器类。
在ServletContextListener接口中定义了两个事件处理方法,分别是contextInitialize()和contextDestroyed()。
ServletContextListener整个工作过程如下图所示


ServletContextAttributeListener接口
ServletContext的属性是由Web应用程序中所有的servlet所共享的。为保证属性在整个Web应用范围内的一致性,有必要监视ServletContext对象的任何属性的改变。ServletContextAttributeListener侦听器就是为了这一目的而设立的。该侦听器是一个实现了接口ServletContextAttributeListener的Java类.

HttpSessionBindingListener接口
如果一个对象实现了HttpSessionBindingListener接口,当这个对象被绑定到Session中或从Session中删除时,Servlet容器会通知这个对象,这个对象在接收到通知后,做初始化操作或清除状态的操作。
HttpSessionBindingListener接口提供了如下方法:
public void valueBound(HttpSessionBindingEvent event)
当对象正在被绑定到Session中,Servlet容器通知对象它将被绑定到某个会话并标识该会话。
public void valueUnbound(HttpSessionBindingEvent event) 
当从Session中删除对象时,Servlet容器通知对象要从某个会话中取消对它的绑定并标识该会话

容器通过HttpSessionBindingEvent对象来通知侦听器发生的事件的具体信息。提供了2种方法:
public  HttpSessionBindingEvent(HttpSession session, String name)
构造一个事件,通知对象它已经被绑定到会话,或者已经从会话中取消了对它的绑定。要接收该事件,对象必须实现 HttpSessionBindingListener。  
public  HttpSessionBindingEvent(HttpSession session, String name, Object value)
构造一个事件,通知对象它已经被绑定到会话,或者已经从会话中取消了对它的绑定。要接收该事件,对象必须实现 HttpSessionBindingListener。

在线人数统计程序
当HttpSession对象创建或者销毁时,Servlet容器会产生HttpSessionEvent事件,而HttpSessionListener就是用来处理HttpSessionEvent事件的,它包含的两个方法就是分别用来处理HttpSession对象的创建和销毁。
【案例】利用HttpSessionBindingListener接口,编写一个在线人数统计的程序。
用户登录成功后,显示欢迎信息,并同时显示当前在线的总人数和用户名单。当一个用户退出登录或Session超时时,从在线用户名单中删除这个用户,同时将在线的总人数减1值。在程序的开发中,利用一个实现了HttpSessionBindingListener接口的监听器,当对象被绑定到Session或从Session中被删除时,更新当前在线的用户名单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值