jsp防止同时登陆问题

dr_lou 2007-04-07 10:39:08
我知道有2种解决办法
<1>数据库方法
<2>我想的用application对象存一个Vector,里面放登陆者的唯一标示

有一个登出按钮,用户点击我就进一个servlet里面修改Vector,然后销毁会话

但是这两个方法都有一个问题我解决不了,就是用户关浏览器。


我本来想做一个session监听器,这样只要一销毁会话,就把Vector里面的用户标示删除,但是session已经销毁了,我无法得到session里面存的用户标示了,如何解决呢?
...全文
720 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
dr_lou 2007-04-24
  • 打赏
  • 举报
回复
我用的ie

我自己已经搞定了 没用js 用的sessionListener

谢谢大家的帮助 揭帖
WIN_ANGEL 2007-04-23
  • 打赏
  • 举报
回复
楼主你用的是FireFox吧 FireFox关闭和刷新不分 没办法
dr_lou 2007-04-23
  • 打赏
  • 举报
回复
WIN_ANGEL(金麟岂是池中物,一遇风云便化龙!)


你把你的代码写在html里面 然后f5一下 再告诉我
WIN_ANGEL 2007-04-19
  • 打赏
  • 举报
回复
<script>
function window.onunload(){alert('这就是你要做的事,关闭网页之后做的!')}
function window.onbeforeunload(){alert('这就是你要做的事,关闭网页之前做的!')}
</script>
不过对于那2个事件IE分的很清没问题 FireFox却刷新和关闭不分 楼主如果采用IE浏览器可以使用上面的方法
  • 打赏
  • 举报
回复
To :dr_lou()

我给你的是struts架构的,但你可以把它变成其他架构的.
dr_lou 2007-04-13
  • 打赏
  • 举报
回复
To : AreamArgentateOfWing(梦幻银翼) struts的 看来用不了 先谢了

To : cifco() ( ) 你想到的我也想过 写在window.before...事件里面,没问题 能实现
但是这个方法在刷新页面的时候也执行

求:session监听的
cifco 2007-04-12
  • 打赏
  • 举报
回复
用上点js 很容易就解决了。。
dr_lou 2007-04-12
  • 打赏
  • 举报
回复
To : AreamArgentateOfWing(梦幻银翼)

刚下载下来 回来看看 :)

jbuider9+tomcat4.1支持么
  • 打赏
  • 举报
回复
To :dr_lou()

我给你的例子你看了么?
是否不适合你呢?
rickhunterchen 2007-04-12
  • 打赏
  • 举报
回复
这就是权限设置,在用户登录后就在session中保存他的用户ID,当他再次试图登录时,可以判断,然后提示他已经登录了。
dr_lou 2007-04-12
  • 打赏
  • 举报
回复
To: bl_long1() ( )

我在servletContext()里面存了Vector 存用户名
现在的问题是 我在sessionDestroyed事件里面得不到用户名了 他说session已经销毁了

PS:jbuider9的session只有2个监听事件sessionCreated、sessionDestroyed

lsj19830812 2007-04-11
  • 打赏
  • 举报
回复
出的提示也很簡單,就是超時!
lsj19830812 2007-04-11
  • 打赏
  • 举报
回复
1.数据库里面放一张表(onlineUser)记录用户id,用户名,最后登錄时间,sessionID(重要)
2.用户登陆的时候先查看是否在这张表里有他的记录,如果有就是重复登陆,設置原來sessionID超時,更新表的sessionID,最后登錄时间等内容,如果没有就在数据库表中添加

這種做法是
登录后把当前登录的用户踢出去
ftiger 2007-04-11
  • 打赏
  • 举报
回复
呵呵,你还可以象QQ一样啊,在别的机器上登录后把当前登录的用户踢出去,不过要给出提示。
bl_long1 2007-04-11
  • 打赏
  • 举报
回复
用Session监听器应当可以实现吧,Session监听器在调用session无效状态的监听方法时Session是有效的,这时可以从Session中取出你要的信息。调用这个方法之后,Session才真正销毁。
古月一刀2005 2007-04-11
  • 打赏
  • 举报
回复
学习!
dr_lou 2007-04-11
  • 打赏
  • 举报
回复
我现在做的是:
1.数据库里面放一张表(onlineUser)记录用户id,用户名,最后活动时间
2.用户登陆的时候先查看是否在这张表里有他的记录,如果有就是重复登陆,没有就在数据库表中添加他
3.只要在界面上有操作就更新这张表的最后活动时间
4.界面2分钟一刷新(为了避免用户长时间不做操作),刷新时更新表的最后活动时间
5.做一个退出按钮,一点退出就删除本人的在线记录
6.数据库做一个作业,每5分钟查看一下这张表里面3分钟内没有动作的用户(判断用户通过关浏览器、断电等非法退出),把他删除。

这样做好么? 大家怎么做的?
huihui0103 2007-04-07
  • 打赏
  • 举报
回复
顶了
dr_lou 2007-04-07
  • 打赏
  • 举报
回复
en 研究研究给分了
  • 打赏
  • 举报
回复
数据库或者文本文件比较容易点。
服务端每隔几分钟清一下,而客户端就用框架中一个隐形窗口每隔几分钟刷新一下,以往也有用弹出窗口来做刷新保持的,但现在容易被过滤掉。
不管客户端因为什么原因用什么方式退出,只要不能再刷新,就会在几分钟后不再存在于在线列表(数据库或者文本文件都可以)中。这样从其它地址登录时就被允许了。
加载更多回复(3)

81,092

社区成员

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

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