jsp防止同时登陆问题
我知道有2种解决办法
<1> 数据库方法
<2> 我想的用application对象存一个Vector,里面放登陆者的唯一标示
有一个登出按钮,用户点击我就进一个servlet里面修改Vector,然后销毁会话
但是这两个方法都有一个问题我解决不了,就是用户关浏览器。
我本来想做一个session监听器,这样只要一销毁会话,就把Vector里面的用户标示删除,但是session已经销毁了,我无法得到session里面存的用户标示了,如何解决呢?
------解决方案--------------------http://218.246.23.46/UpBase/downloads/SessionListener.zip
看看吧,这个可能对你有所帮助
------解决方案--------------------数据库或者文本文件比较容易点。
服务端每隔几分钟清一下,而客户端就用框架中一个隐形窗口每隔几分钟刷新一下,以往也有用弹出窗口来做刷新保持的,但现在容易被过滤掉。
不管客户端因为什么原因用什么方式退出,只要不能再刷新,就会在几分钟后不再存在于在线列表(数据库或者文本文件都可以)中。这样从其它地址登录时就被允许了。
------解决方案--------------------用Session监听器应当可以实现吧,Session监听器在调用session无效状态的监听方法时Session是有效的,这时可以从Session中取出你要的信息。调用这个方法之后,Session才真正销毁。
------解决方案--------------------1.数据库里面放一张表(onlineUser)记录用户id,用户名,最后登錄时间,sessionID(重要)
2.用户登陆的时候先查看是否在这张表里有他的记录,如果有就是重复登陆,設置原來sessionID超時,更新表的sessionID,最后登錄时间等内容,如果没有就在数据库表中添加
這種做法是
登录后把当前登录的用户踢出去
------解决方案--------------------这就是权限设置,在用户登录后就在session中保存他的用户ID,当他再次试图登录时,可以判断,然后提示他已经登录了。
------解决方案-------------------- <script>
function window.onunload(){alert( '这就是你要做的事,关闭网页之后做的! ')}
function window.onbeforeunload(){alert( '这就是你要做的事,关闭网页之前做的! ')}
</script>
不过对于那2个事件IE分的很清没问题 FireFox却刷新和关闭不分 楼主如果采用IE浏览器可以使用上面的方法