经典的重登录问题,解决大大的加分

wowonan 2004-07-10 02:31:32
我先说一下我的思路:
1.在表里面有个字段status用来存储是否在线的状态:0为offline,1为online
2.login时,更新数据库,status=1,再有人用此帐号登陆,提示他该帐号被使用中, 稍后再登陆.注销时,再更新数据库,status=0


3.关键是,非正常退出时,我该怎样判断

我是这样想的
4.login时,同时设session的最大不活动时间为300,即5分钟没动作,session失效
5.session失效,即为不在线状态,这时应该更新数据库,把他的status设为0

但是问题来了,当session失效时,里面的信息都没了,那我该根据什么去修改数据呢?这个问题真是让我头大,想了一天没解决,清高手指点

另外如果我的思路不对的话,也请提出来,请给我一个更好的解决此问题的方法,
谢谢,解决了绝对加分
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gln 2004-07-11
  • 打赏
  • 举报
回复
使用HttpSessionListener类来监听session的销毁,并做相应处理就行了
dryr 2004-07-11
  • 打赏
  • 举报
回复
同意楼上,估计是最好的方法了
wowonan 2004-07-10
  • 打赏
  • 举报
回复
到底是什么方法快告诉我啊,老大
zhugegod 2004-07-10
  • 打赏
  • 举报
回复
我在自己写的论坛上也遇到了这个问题,我的解决方法是:
1:使用session内置对象得到所有已经登陆的用户(有一个方法可以得到所有session域的对象的引用),每次登陆时check一下用户名是不是已经在hashtable中,是则无法登陆。
2:session的有效期是30分钟,30分钟后容器会让它失效的,这样就可以再次登陆了。
dddeee 2004-07-10
  • 打赏
  • 举报
回复
关注
wowonan 2004-07-10
  • 打赏
  • 举报
回复
大家来看看啊
wowonan 2004-07-10
  • 打赏
  • 举报
回复
能给点具体的代码吗?
myy 2004-07-10
  • 打赏
  • 举报
回复
1.最好不要用在数据库中做标志的方法记录在线情况,可以用全局
Hashtable记录,比如 UserId <-> session

2.写会话监听(HttpSessionListener),可以捕获会话的创建和销毁事件

81,114

社区成员

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

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