200分求SessionCounter

zhu_liping 2002-08-06 10:21:06
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、这样计算在线人数不准确怎么办?
...全文
71 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Reve 2002-08-10
  • 打赏
  • 举报
回复
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.
leonzhao 2002-08-10
  • 打赏
  • 举报
回复
另外,请不要给我加分,是“不要”,谢谢。
leonzhao 2002-08-10
  • 打赏
  • 举报
回复
用javascript: <body onunload="/servlet/Logout">

但是如果用户断开网络,你也就没办法,老老实实等session超时。
Reve 2002-08-10
  • 打赏
  • 举报
回复
要你你用servlet的一个runnable的低线程,一直在检测session的时间问题。
这个就等于自己在弄个像session机制的线程,估计很烦琐。
zhu_liping 2002-08-10
  • 打赏
  • 举报
回复
再没有别的招了吗?
leonzhao 2002-08-09
  • 打赏
  • 举报
回复
关闭窗口不等于sessionDestroy,关闭窗口这种服务器得不到的操作,它们的session都会在Timeout后触发sessionDestroy。
zhu_liping 2002-08-06
  • 打赏
  • 举报
回复
那为什么关闭窗口后它不响应sessionDestroyed事件
LuZhou 2002-08-06
  • 打赏
  • 举报
回复
1、建立一个Application变量来计数;
2、或则在服务器端建立一个文件来存储计数,每次新增数目时在读出的计数基础上加1,然后写入文件;
3、或则用数据库表来代替文件。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧