session一般都是這樣用來保存用戶個人信息的.
如果用戶直接關閉瀏覽器,服務器是無法知道的,當會話超時(一般為30分鐘)會產生HttpSessionBindingEvent,使用public void valueBound(HttpSessionBindingEvent e)來捕獲此事件
如果用戶直接關閉瀏覽器,服務器是無法知道的,當會話超時(一般為30分鐘)會產生HttpSessionBindingEvent,使用public void valueBound(HttpSessionBindingEvent e)來捕獲此事件
銷毀時的是public void valueUnbound(HttpSessionBindingEvent e)
* 编写以下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文件用于显示在线人数 在线: 然后需要在你的网站的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> 然后重新启动你的应用服务器,访问online.jsp检查是否显示正确。 你的问题和这个大同小异,原理相同,应用的是不同的监听器而已。欢迎到www.javaresearch,org看看。
class A {
static int i =0;
}进行记数。
但是不能做到离开时去掉,因为session的异常销毁。