当前位置:编程学习 > JAVA >>

在线用户统计 在用户直接关闭浏览器退出的时候如何删除用户在线

有退出按钮 可以实现这个功能 但是一些用户直接关闭浏览器 发现在线用户还是存在 用session的话  无法及时更新 我想做到用户浏览器一关  我这边一刷就能显示用户已下线  应该用什么方法呢  查了好多说要加一个监听  我是初学  不是很懂  这个监听怎么讲呢  有没有前辈能给点相似代码借鉴一下 谢谢了。 --------------------编程问答-------------------- 最近也在做这个,有个方法可以监听到浏览器关闭的事件,但只对单窗口浏览器有效
同求解决办法 --------------------编程问答-------------------- 用户离开系统的方式有三种:主动注销、会话超时、直接关闭浏览器,对于前两种,我们很容易便可将该用户从在线列表中清除,关键是第三种(很多用户都是直接关闭窗口的~~郁闷ing),程序无法捕获窗口关闭的精确时间,只能等到会话超时后在能将该用户清除出在线列表 这样描述是不是清楚点。。 --------------------编程问答-------------------- 在线等  小问题 没大神能帮忙解决下吗。 --------------------编程问答-------------------- http://pengjianbo1.iteye.com/blog/507569 --------------------编程问答-------------------- 楼主别等了这问题以前就有人问过,根本不可能实现,用户怎么关闭浏览器b/s的程序是没法知道的。就拿关闭来说他可以点击浏览器的关闭X按钮关闭,也可以在系统地下的任务栏上右击关闭菜单关闭,也可以在浏览器的标题栏上右击关闭菜单关闭这你就无法判断了,还有如果用户浏览器卡住了直接用进程管理器结束进程关闭,以及死机直接重启机器这些b/s的就更做不到了 --------------------编程问答-------------------- 只有监听服务器的session。但是直接关闭浏览器,session还会存在一定时间,所以呢,监听在线人数,我想也没必要做那么精准,是有差异的。 --------------------编程问答-------------------- 你仔细观察一下通用的网站的话应该会发现,用户在线数量的改变应该不是即时的,
所以我觉得应该里面涉及到一个超时的问题吧。 --------------------编程问答--------------------
public class UserSessionListener implements HttpSessionActivationListener,
HttpSessionAttributeListener, HttpSessionBindingListener,
HttpSessionListener

楼主可以参考下 jdk,不过这也只能当浏览器关闭之后,session过期时候的处理;
直接关闭浏览器 session在一段时间之后 会destory掉的~!
重写下边的方法:
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {}
--------------------编程问答-------------------- 尝试了JS等各种方法  好像都阵亡了。session超时这个我已经做了 timeout写的15 就是感觉太长了 用户异常关闭浏览器 不用正常退出时  需要15分钟才能更新在线列表 太短的话 在线用户又容易被弹出  诶  JS方法onbeforeunload 弹出对话框后 选择后可以进入action方法中吗 我尝试window.onbeforeunload = onbeforeunload_handler;
function onbeforeunload_handler(){  
    var warning="确认退出?";          
    if(confirm(warning)){  
         window.location.href="login!loginout.so";
    }
    return warning;
}  
应该怎么写 当点击确定后 可以进入login!loginout.so  ?
  --------------------编程问答--------------------
引用 5 楼 suciver 的回复:
楼主别等了这问题以前就有人问过,根本不可能实现,用户怎么关闭浏览器b/s的程序是没法知道的。就拿关闭来说他可以点击浏览器的关闭X按钮关闭,也可以在系统地下的任务栏上右击关闭菜单关闭,也可以在浏览器的标题栏上右击关闭菜单关闭这你就无法判断了,还有如果用户浏览器卡住了直接用进程管理器结束进程关闭,以及死机直接重启机器这些b/s的就更做不到了

你好 我就想做到用户直接关闭浏览器这一种情况的呢  其它都用session超时做了。可以用什么方法呢。 --------------------编程问答--------------------
引用 10 楼 u010594345 的回复:
Quote: 引用 5 楼 suciver 的回复:

楼主别等了这问题以前就有人问过,根本不可能实现,用户怎么关闭浏览器b/s的程序是没法知道的。就拿关闭来说他可以点击浏览器的关闭X按钮关闭,也可以在系统地下的任务栏上右击关闭菜单关闭,也可以在浏览器的标题栏上右击关闭菜单关闭这你就无法判断了,还有如果用户浏览器卡住了直接用进程管理器结束进程关闭,以及死机直接重启机器这些b/s的就更做不到了

你好 我就想做到用户直接关闭浏览器这一种情况的呢  其它都用session超时做了。可以用什么方法呢。

我不是说了吗用户直接关闭浏览器也有点击浏览器的关闭X按钮关闭,也可以在系统地下的任务栏上右击关闭菜单关闭,甚至alt+F4。这么多没法判断的 --------------------编程问答-------------------- 这玩意 跟本无法判断。。。 --------------------编程问答-------------------- step 1. 将登录后的用户存入一个集合中,并记录最后更新时间。
step 2. 编写一个filter过虑每个需要验证登录的http请求,每次请求更新集合中用户的最后更新时间。
step 3. 再写一个线程每过多长时间就循环一下这个集合中的用户,如果用户已经超过了系统的登录超时时间就从集合中移除,并认为这个用户已经登出了。

个人意见,仅供参考。实际的逻辑还要根据你自己的系统设计而定。
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,