当前位置: 技术问答>java相关
200分求SessionCounter
来源: 互联网 发布时间:2015-08-01
本文导语: 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(Ht...
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; }
}
问题:
1、在什么时候会响应sessionDestroyed?
2、这样计算在线人数不准确怎么办?
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; }
}
问题:
1、在什么时候会响应sessionDestroyed?
2、这样计算在线人数不准确怎么办?
|
1、建立一个Application变量来计数;
2、或则在服务器端建立一个文件来存储计数,每次新增数目时在读出的计数基础上加1,然后写入文件;
3、或则用数据库表来代替文件。
2、或则在服务器端建立一个文件来存储计数,每次新增数目时在读出的计数基础上加1,然后写入文件;
3、或则用数据库表来代替文件。
|
关闭窗口不等于sessionDestroy,关闭窗口这种服务器得不到的操作,它们的session都会在Timeout后触发sessionDestroy。
|
I think the destroy event only be called when another page is visited. (not from the same session or when the session is timeout. If session time out, other people visit the pages which include the bean also make it. So you also can call it by visit the page).
I just guess.
I just guess.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。