到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comwww.javaresearch.org无关,不对该信息负责.通过http://www.javaresearch.org/article/57321.htm访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
JAVA解决用户同时在线问题-解决方案用户池
作者:lxh_ming 来源:www.javaresearch.org  发布时间:2006-11-09 13:22:15.397


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

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

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读