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

文章来自:
标签: 





投资移民
加拿大移民
技术移民
移民加拿大
澳洲技术移民
德国移民
移民澳洲
澳洲移民
出国移民
移民出国
英国移民
澳大利亚移民
加拿大投资移民
加拿大技术移民
美国留学
法国留学
北欧留学
瑞典留学
芬兰留学
澳洲留学
步进电机
联轴器
肠炎
结肠炎
直肠炎
慢性肠炎
慢性结肠炎
结肠炎的治疗
溃疡性结肠炎
慢性结肠炎的治疗
工作服
职业装
北京工作服
定做工作服
北京二手空调回收
空调维修
物资回收
铠装热电偶
精密铸造
美术培训
美术高考
美术高考培训
画室
北京画室
谐波治理
无功补偿
丝锥
挤压丝锥
非标丝锥
梯形丝锥
螺纹环规
英美制丝锥
继电保护测试仪
煤气发生炉
两段式煤气发生炉
环保节能型煤气发生炉
日语学校
日语培训
安装卫星电视
安装卫星天线
北京安装卫星电视
北京安装卫星天线
韩国服装
韩版服装
韩国服饰
针孔摄像机
望远镜
夜视仪
探测狗
窃听器
无线耳机
屏蔽器
金属探测器
隔墙监听器
国标舞
拉丁舞
无纸记录仪
红外测温仪
无纸记录仪
喷码机
针孔摄像机
烤瓷牙
除沫器