用户重复登录问题.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用户重复登录问题

用户重复登录问题 悬赏分:5 - 解决时间:2009-8-7 10:21 我现在要实现这种功能: 当用户在一台机器上登录以后,就不能在其他机子上再次登录。用户正常退出后,才可以在其他地方登陆。当遇到非法退出的时候也能再次登录!比如遇到突然断电或机器重启的时候也还等在其他地方登陆! 哪位大虾给分析分析,要怎么才能实现!首先, 你在登陆的时候应该把用户名存入到session中去, 然后用Web自带框架中, 有一个HttpSessionListener接口, 还有HttpSessionAttributeListener接口, 他们两个有一些需要实现的方法 HttpSessionListener两个:sessionCreated, sessionDestroyed sessionCreated不用管, 扔在那儿就行了. 主要是sessionDestroyed, 他是在你的Session失效或者过期的时候调用的这个方法, HttpSessionAttributeListener三个:attributeAdded, attributeRemoved, attributeReplaced attributeAdded是当执行setAttribute的时候, 当这个属性本来不存在于Session中时, 调用这个方法. attributeRemoved是当执行removeAttribute时调用的方法. attributeReplaced是当执行setAttribute时 ,如果这个属性已经存在, 覆盖属性的时候, 调用这个方法 这样, 我就可以在这个Listener中声明一个全局的Map, 用来保存当前已经登录的用户, 当用户登录的时候, 会往session中保存用户名, 这样就触发了attributeAdded或attributeReplaced方法, 这时候把相应的用户put入Map中去, key就用session的引用就行, 也就是Session本身, value保存登陆用户的Name, 当用户登出或者Session失效的时候, 触发方法attributeRemoved和是sessionDestroyed, 根据Session , 把相应的用户移出Map, 这样, 就首先做到了保存在线用户的工作. 然后就是登陆判断, 可以在这个SessionListener中写一个静态的方法, 传递进来一个用户名name , 然后遍历Map判断这个用户名是否存在, 存在就返回true ,不存在就返回false, 然后在登陆的servlet或者Action中控制一下, 就能达到重复登录限制的效果了. 这个Listener的代码给你参考一下: import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { private static MapHttpSession, String logonUsers = new HashMapHttpSession, String(); // 保存当前登录的所有用户 public static String SESSION_LOGIN_NAME = logonUser; // 用这个作为key, 在session中保存用户名. public void sessionCreated(HttpSessionEvent se) { } public void sessionDestroyed(HttpSessionEvent se) { // 如果session超时, 则从map中移除这个用户 try { logonUsers.remove(se.getSession()); } catch (Exception e) { } } public void att

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档