防止用户重复登录

防止用户重复登录

监听器监听到session属性值变化后,通过什么方法能将监听结果反应出去呢,完全没有思路,请老师帮帮忙!

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,当用户登录时,我们会在登录Servlet中,往session中放用户信息。如下:

http://img1.sycdn.imooc.com//climg/604b3d4f09c1a77e07570256.jpg

我们可以创建一个监听器类,重写attributeAdded()方法,当往session中添加信息时,会触发attributeAdded()方法,比较两次session的id值是否一样。

如下:

http://img1.sycdn.imooc.com//climg/604b3d81094b5b8609690437.jpg

同学可以参考一下另一个问答 https://class.imooc.com/course/qadetail/278189

祝学习愉快~

  • 慕后端6104825 提问者 #1

    请问这里的LoginMessage.getInstance().getSessionIdByUsername()是什么方法呢?能不能稍微详细讲一下?以前没用过这个方法。

    2021-03-13 11:35:43
  • 好帮手慕阿慧 回复 提问者 慕后端6104825 #2

    同学你好,LoginMessage是我们自己创建的类,getInstance()方法是获得LoginMessage对象。LoginMessage类中有一个Map类型的属性loginUserSession,用于保存登录的用户名和sessionId。getSessionIdByUsername(String username)方法是获得loginUserSession中键为username的value值。

    LoginMessage代码如下:

    http://img1.sycdn.imooc.com//climg/604c51c00960bd6911200552.jpg

    祝学习愉快~

    2021-03-13 13:46:51
  • 慕后端6104825 提问者 回复 好帮手慕阿慧 #3

    哦哦,我之前以为是直接把前一次的浏览器窗口的session删除了,原来只是删除了map里面的。所以我还是不明白怎么删除浏览器里面的那个session,然后怎么让页面刷新之后弹出alert框的。请问这里是怎么实现的呢?还是最初的问题,我还是没明白。
    这个题我已经做了三天了,做不出来太难受了,严重影响了我学习的进度,咱们出题之后有没有一个完整的标准代码答案供下载呢?我这一遍遍问实在是没完没了。。。

    2021-03-13 15:17:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师