對網(wǎng)上《HttpSessionListener統(tǒng)計在線人數(shù) 》一文做一下修改
Posted on 2006-04-19 15:55 何以解憂,唯有學習!讓每一個人都能Open Source 閱讀(527) 評論(1) 編輯 收藏 所屬分類: Web相關今天在chinaitpower上看到這樣一篇文章,原文內(nèi)容如下:
/** * 編寫以下SessionCounter.java * 并編譯為SessiionCounter.class * 然后放到你的網(wǎng)站的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文件用于顯示在線人數(shù) <%@ page import="SessionCount.SessionCounter" %> 在線:<%= SessionCounter.getActiveSessions() %> 然后需要在你的網(wǎng)站的WEB-INF中建立web.xml 文件內(nèi)容如下: <!-- Web.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"<web-app><!-- Listeners -->
<listener>
<listener-class>
SessionCount.SessionCounter
</listener-class>
</listener></web-app>試了一下,發(fā)出當用戶調(diào)用SessionCounter類時sessionCreated方法被執(zhí)行,activeSessions加1,但是,關閉瀏覽時
sessionDestroyed并沒有被執(zhí)行,為什么呢,原因是因為關瀏覽器不一定會釋放session,所以,導致sessionDestroyed
不會被執(zhí)行,那么,有什么方法呢,退出頁面logout.jsp上,使用session.invalidate()釋放會話,那么sessionDestroyed
也就被執(zhí)行,在線人數(shù)也就相應的減1,或是設置session的不活動時間等等。