监听器也是Servlet 2.3新增的功能,在许多触发性的处理中需要。通常用做用户某一事件的触发监听,比如监听用户的来访和退出、监听某一数据事件的发生或者定义一个周期性的时钟定期执行。这一功能极大地增强了Java Web程序的事件处理能力。
为了演示监听器的使用,这里以在线用户计数器为例进行讲解。首先在 D:/Tomcat 6.0/webapps下新建测试站点目录counter,并复制D:/Tomcat 6.0/webapps/ROOT下的所有文件和目录到D:/Tomcat 6.0/webapps/counter目录下。下面在该目录下进行调试。
配置监听器
首先在文件counter/WEB-INF/web.xml中添加如下的监听器器配置:
2 | <listener- class >com.utils.CounterListener</listener- class > |
在counter/WEB-INF/classes/com/utils下新建类CounterListener.java,代码如下:
02 | import javax.servlet.http.*; |
04 | public class CounterListener implements HttpSessionListener { |
05 | public static int count; |
06 | public CounterListener () { |
11 | public void sessionCreated(HttpSessionEvent se) { |
16 | public void sessionDestroyed(HttpSessionEvent se) { |
在该代码中,变量count为静态变量,在整个系统中唯一,记录整个系统中在线用户数。sessionCreated()在用户到访时自动调用,使用 count++;sessionDestroyed()在用户会话过期或单击退出销毁session时调用,使用count--
统计的功能有了,现在在login.jsp中添加一句代码,用以显示用户计数:
当前在线用户:<%=com.utils.CounterListener.count%>