日期:2014-05-17  浏览次数:20895 次

java系统如何获取当前登录用户的数量
我用 struts + spring + ibatis 做了一个系统,如何在这个系统中控制登录用户的数量?
网上查了一些资料,大部分是通过监听session的数量,来计算当前连接数,但是,当用户直接关闭浏览器,或者其他没有通过正常途径退出,这个session还在存活期,就不能实时统计这个数量,有没有更好的方法做到实时统计登录用户?

------解决方案--------------------
你可以吧session过期时间设置的短点!比如一分钟,那样用户在非正常手段关掉网站,1分钟之后就知道了
------解决方案--------------------
你可以在页面中放个类似与定时器的东西啊,用ajax每个5到10秒的样子请求一下后台,后台自然要做监听,如果隔几十秒还没收到某个用户用ajax提交过来的用户ID,就当该用户已经下线。

不过这种方式每个页面中都要放点东西,如果用的是frame的就好了,只需在一个页面中弄个ajax定时循环的跑。
------解决方案--------------------
实时数据并不一定非得完全准确实时,非正常退出的只能当他还在线直到Session失效
循环Ajax发请求是不对的,这样只要不关页面是不是就一直不超时了
------解决方案--------------------
你只能统计到个大概的,精确地是做不了的!

比如说用户关浏览器、直接关机,或者直接断电!这些能监测到么?
------解决方案--------------------
application针对多个用户,多用户记录网站登录人数
session针对一个用户,多用户记录一个登陆用户


学习。。。。
------解决方案--------------------
因为统计操作不是无时无刻在做,所以可以在统计的时候遍历一次SESSION,对每个客户端做一次
“心跳检测”,这样就能统计出来真正的在线用户了