`
zjx2388
  • 浏览: 1304638 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

某人关于不重复登录的简单处理说明

    博客分类:
  • J2SE
阅读更多

1.用的是servlet的监听器:
(1)用的是HttpSessionListener 这个监听器下有两个方法sessionCreated和sessionDestroyed,当有session创建时就调用
   sessionCreated这个方法,当有session失效的时候调用sessionDestroyed这个方法。
(2)程序启动时,开辟一块内存空间,来存储在线用户。(我用了个静态的map),map中存的是username和sessionid
(3)当有用户登录时,先用用户名去map中取,如果取出的sessionid为空,添加到map中,相反则返回登陆页,告知用户已登录。
(4)当有用户退出是分两种情况:一是单击退出按钮这个好捕捉,清空session。二是用户直接关闭浏览器,这个在页面中用了一个window.onbeforeunload事件,来清空session。(这个是一个弊端,我这个页面有个公用的页面加一个就好了,但是如果没有公用的页面,在添加这个事件就要每个页面都要添加,本来浏览器关闭后会session会自动失效不知道为什么没有调用监听器的sessionDestroyed方法(考虑中),考虑更好的方法。)
(5)当用户单击刷新按钮时,会重新运行程序,此时这个用户已经存储在静态的map中了,这样用户会被踢下线,而且只有等到session消失时才能在登录(解决方法,刷新时用户的sessionid是不变的,在这比较一下用户的此时的sessionid和存储的sessionid如果相等则也可登录)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics