当前页面: 开发资料首页 → JSP 专题 → 统计在线人数问题!
统计在线人数问题!
摘要: 统计在线人数问题!
1、统计在线(包括游客)人数?
2、统计登陆的用户人数?
3、用户非正常退出解决方法?
4、游客的离开如何统计?
1:用户身份识别机制
2:session监听机制。
结合起来就可以了
能不能详细点?
不好意思,我比较懒,难到叫我写一大段程序出来吗?
我只是给你指条路而已,其他还是靠你自己8,求人不如求己呀
再详细点:
1:所有用户登陆,包括游客,都登记在服务器用户表中,这个表是内存里,不是在数据库的。
2:内存表里放的是用户对象,里面有用户标识和用户角色类别。
3:所有统计功能对用户表进行分类统计就可以得到。
4:用户登陆的时候建立session,session里有个指向用户对象的引用,同时对session进行监听
5:实现session超时事件, 超时后把对应的用户对象从用户表里删除掉
前4个搞定了
还有第5个 不知道 具体怎么实现
1.//session 监听器统计在线人数(包括游客),存放在application对象里
public class SessionListener implements HttpSessionListener {
private Logger logger=Logger.getLogger(this.getClass());
private long count=0;
public synchronized void sessionCreated(HttpSessionEvent se) {
this.count=this.count+1;
se.getSession().getServletContext().setAttribute("count",this.count+"");
}
public synchronized void sessionDestroyed(HttpSessionEvent se) {
this.count=this.count-1;
se.getSession().getServletContext().setAttribute("count",this.count+"");
}
}
把监听器注册到web.xml里
listener.SessionListener//这里写上面那个监听器类的全名,也就是包括包名和类名
2.统计用户在线数量
在用户表中添加一个是否在线字段,当用户登陆的时候修改字段为在线,在上面session销毁的事件里修改改用户为离线,根据是否在线字段查询出在线用户总数量...
cookie加session监听器
3.用户非法退出的时候,直接关闭浏览器的时候可以用JS监听浏览器关闭事件,在关闭事件里提交服务器把用户设置为离线.
如果是用户正在浏览,突然电脑断电,这种没办法解决的.
4.游客离开时,和用户离开时,都要调用session.invalidate();让session过期
谢谢大家
listener.SessionListener
顺便问一下:是不是只能注册一个监听器注册到web.xml里??
或者 有的类不行?
我自己写的类可以注册吗?
是自己写的类
还有 我有一个工程 注册监听器时都是失败!
新建了一个 就没问题,
那就不知道了...
搞不清楚
用count 来统计
也不知道是什么回事!我的工程只能加一个监视器!
可是我拿以前备份的来做又可以加两个!郁闷ING!
不过现在总算可以 计算出再线人数了!包括登陆人数也搞定!
还差离线问题没有搞定!还须继续努力!
标记