P to P

何以解忧,唯有学习!让每一个人都能Open Source
posts - 4, comments - 12, trackbacks - 0, articles - 11
今天在chinaitpower上看到这样一篇文章,原文内容如下:
/** 
* 编写以下SessionCounter.java 
* 并编译为SessiionCounter.class 
* 然后放到你的网站的classpath的 
* SessionCount(自己建立此目录)下面 
*/ 

package SessionCount; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class SessionCounter implements HttpSessionListener { 

private static int activeSessions = 0; 

public void sessionCreated(HttpSessionEvent se) { 
activeSessions++; 
} 

public void sessionDestroyed(HttpSessionEvent se) { 
if(activeSessions > 0) 
activeSessions--; 
} 

public static int getActiveSessions() { 
return activeSessions; 
} 
} 

接着建立online.jsp文件用于显示在线人数 
<%@ page import="SessionCount.SessionCounter" %> 
在线:<%= SessionCounter.getActiveSessions() %> 

然后需要在你的网站的WEB-INF中建立web.xml 
文件内容如下: 
<!-- Web.xml --> 
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app 
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
<web-app> 
<!-- Listeners --> 
<listener>
<listener-class>
SessionCount.SessionCounter
</listener-class>
</listener>
</web-app> 






试了一下,发出当用户调用SessionCounter类时sessionCreated方法被执行,activeSessions加1,但是,关闭浏览时
sessionDestroyed并没有被执行,为什么呢,原因是因为关浏览器不一定会释放session,所以,导致sessionDestroyed
不会被执行,那么,有什么方法呢,退出页面logout.jsp上,使用session.invalidate()释放会话,那么sessionDestroyed
也就被执行,在线人数也就相应的减1,或是设置session的不活动时间等等。

Feedback

# re: 对网上《HttpSessionListener统计在线人数 》一文做一下修改  回复  更多评论   

2007-03-14 09:40 by Baggio
谢谢

只有注册用户登录后才能发表评论。


网站导航: