JR 精品文章 - JAVA解决用户同时在线问题-解决方案用户池
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » JSP/Servlet/JSF 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
JAVA解决用户同时在线问题-解决方案用户池
yubaojian0616 原创   更新:2006-11-01 13:58:17  版本: 1.0   

     在处理WEB时,有时需求可能是不能让同一个用户在不同的地方登录,本人针对这个问题进行处理,一般网上用的方法一般都是通过什么数据库阿,要么就是什么JS,第一个思路就是现在大多人认为用数据,方法就是在数据库用户表比如Users表中添加一个字段 bit 当有人用这个用户登录的时候就把它变成1,
  本人认为这个方法不好,原因有两个:第一 数据库更新问题,需要很大的性能 而且如果大量用户这样做,后果不堪设想。第二:服务器无法判断设么时候用户推出登录,如果用JS 无法解决断网问题,还有就是如果一个用户在同一个计算机上登录两次那么那么第二次将不能登录,这倒可以理解,如果一个用户关闭浏览器 服务器不知道,这个用户还向登录,后果就是登不上去了,所以本人的方法就是解决这些问题
  解决方案:
  思想:就是用类似QQ的方法,如果一个用户再次登录,退出第一个登录的用户,保留第二个
  存储:利用用户池java.util.Map作为用户池容器,里面放着用户标示和sessionId,这个容器放到application对象中介可以;
  原理:当用户登录时直接put进去就可以了,如果这个对象存在就会被更新
  其他:编写listener用HttpSessionAttributeListener地实现 处理session属性的removed在removed的时候清楚这个用户在对象池中的状态 
  检查:编写一个用户Filter来检查请求的sessionId和用户池是否匹配就可以了如果不匹配清楚这个session中的用户对象 迫使下线

  总结:这个市我们现在用的处理方法希望对大家有所帮助,有什么问题留言或联系我yubaojian0616@163.com

版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     17       0
作者其它文章: 作者全部文章
评论人:lxh_ming 发表时间: Mon Nov 06 09:25:50 CST 2006
如果用Ctrl + N,你的这个方案就没法子了
评论人:yubaojian0616 发表时间: Mon Nov 06 11:30:08 CST 2006
我刚才看了一下 ctrl+n 没有问题,当前用户没有被迫下线,新打开的窗口也可以正常操作 两个sessionId应该是一个 如果还怀疑你可以自己试验一下,由于我们这个市项目需要所以现在我也没有源代码给大家 ,等过一段时间我们项目完成 我在把这个源代码给大家
评论人:mrou2001 发表时间: Thu Dec 07 14:30:00 CST 2006
加油啊,支持[java]
评论人:vampire_315 发表时间: Sun Dec 17 20:25:31 CST 2006
不错啊
评论人:vampire_315 发表时间: Sun Dec 17 20:25:41 CST 2006
好啊
评论人:vampire_315 发表时间: Sun Dec 17 20:26:20 CST 2006
谢谢啊

这个文章共有 6 条评论
主题: 最近用JSF(JAVA SERVER FACES)遇到h:commandButton不能提交的问题 上一篇文章
返回文章列表 返回〔JSP/Servlet/JSF〕
下一篇文章 主题: JAVA基础:Java变量类型间的相互转换


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号