发布时间 : 星期四 文章Jsp、Servlet参考资料更新完毕开始阅读
8 public class OnLineCountListener implements HttpSessionListener, ServletContextListener,ServletContextAttributeListener 9 {
10 private int count;
11 private ServletContext context = null; 13 public OnLineCountListener() 14 {
15 count=0; 16 //setContext(); 17 }
18 //创建一个session时激发
19 public void sessionCreated(HttpSessionEvent se) 20 {
21 count++;
22 setContext(se); 24 }
25 //当一个session失效时激发
26 public void sessionDestroyed(HttpSessionEvent se) 27 {
28 count--; 29 setContext(se); 30 }
31 //设置context的属性,它将激发attributeReplaced或attributeAdded方法 32 public void setContext(HttpSessionEvent se)
33 {
34 se.getSession().getServletContext().setAttribute(\er(count)); 35 }
36 //增加一个新的属性时激发
37 public void attributeAdded(ServletContextAttributeEvent event) { 39 log(\40 event.getValue() + \42 }
44 //删除一个新的属性时激发
45 public void attributeRemoved(ServletContextAttributeEvent event) { 47 log(\48 event.getValue() + \50 }
52 //属性被替代时激发
53 public void attributeReplaced(ServletContextAttributeEvent event) { 55 log(\56 event.getValue() + \57 }
58 //context删除时激发
59 public void contextDestroyed(ServletContextEvent event) { 61 log(\62 this.context = null; 64 }
66 //context初始化时激发
67 public void contextInitialized(ServletContextEvent event) { 69 this.context = event.getServletContext(); 70 log(\72 }
73 private void log(String message) {
75 System.out.println(\76 } 77 } 【程序注解】
在OnLineCountListener里,用count代表当前在线的人数,OnLineCountListener将在Web服务器启动时自动执行。当OnLineCountListener构造好后,把count设置为0。每增加一个Session,OnLineCountListener会自动调用sessionCreated(HttpSessionEvent se)方法;每销毁一个Session,OnLineCountListener会自动调用sessionDestroyed(HttpSessionEvent se)方法。当调用sessionCreated(HttpSessionEvent se)方法时,说明又有一个客户在请求,此时使在线的人数(count)加1,并且把count写到ServletContext中。ServletContext的信息是所有客户端共享的,这样,每个客户端都可以读取到当前在线的人数。
为了使监听器生效,需要在web.xml里进行配置,如下所示:
<%@ page contentType=\目前在线人数:
<%=getServletContext().getAttribute(\ getServletContext().getAttribute(\获得了count的具体值。客户端调用
退出会话: