关键词不能为空

当前您在: 主页 > 高中公式大全 >

生病祝福短信java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-04 20:34
tags:web版qq

哪吒简笔画-春联的种类

2021年1月4日发(作者:冯其庸)
又有好多天没有写博客了,最近有网友问我,在java web中如何实现像QQ登录的功能,
同一帐号不能同时在两台电脑上登录。
一、该功能有什么作用
大家想想吧。反正总会有这样的需求的。这年头什么需求不 会有。。呵呵。有时候也不
一定是需求,很有可能为了安全也会这么做。例如考试系统,在线聊天系统, 很有必要做成
这样的吧。
二、实现过程
a.问题分析
在系统中,我们一般都是把登录信息绑定到session中,看来从这入手是可能找
到解决办法。说白 了,也就是当用户登录时,判断一下这个用户有没有登录,如果登录了,
就把以前的那个session 清除掉就OK了。。看似很简单是不?其实你细想你会发现有以
下问题:如何得到之前这个用户有没有登 录过,也就是如何访问到所有登录的session信
息呢?
b.具体实现
大家知道,在j2ee api好像是没有具体的方法直接得到所有session信息的。但是
我们可 以通过配制监听器,监控所有的session创建和消毁过程,以及可以监控session
中的属性 的创建,删除和替换过程。
其实我们只要做以下处理即可:
在保存用户登录信息到session时,对应的也就是session一个属性的创建过
程(attr ibuteAdded),可以把当前这个session记录到一个ArrayList中。
其实在保存到list中时你要首先遍历一下这个list中有没有已经存在该用户的登
录信息。如果存 在就消毁掉这个list中存在的session信息,并且从list中移除,不存在
就把该sess ion信息放到list中。
在session的登录信息消毁时,直接把该sesseion从list中移除掉。
还有就是当用户登录后没有退出直接登录这个时候是一个session属性的替换
过程。也要做处理判 断新的用户是否已经在除了当前session的其它session中是否存在。
存在则删除。
具体代码如下:

package

import ist;
import tions;
import

import ssion;
import ssionAttributeListener;
import ssionBindingEvent;
import ssionEvent;
import ssionListener;

public class RecordSessionListener implements HttpSessionAttributeListener,
HttpSessionListener {
private static List sessions;
public static String loginFlag =

static {
if (sessions == null) {
sessions = onizedList(new ArrayList());
}
}

public void attributeAdded(HttpSessionBindingEvent e) {
HttpSession session = sion();

n();
String attrName = e();

登录
if ((loginFlag)) {
User nowUser = (User) ue();
User sUser = (User)ribute(loginFlag);
遍历所有session
for (int i = ()-1; i >= 0; i--) {
SessionAndUser tem = (i);
if (rID().equals(e())) {
sion().invalidate();自动调用remove
break;
}
}

SessionAndUser sau = new SessionAndUser();
rID(e());
sion(session);
(());
(sau);

}

}

public void attributeRemoved(HttpSessionBindingEvent e) {
HttpSession session = sion();
n(Removed*-----------------------);
String attrName = e();
登录
if ((loginFlag)) {
User nowUser = (User) ue();
遍历所有session
for (int i = ()-1; i >= 0; i--) {
SessionAndUser tem = (i);
if (rID().equals(e())) {
(i);
break;
}
}

}
}

public void attributeReplaced(HttpSessionBindingEvent e) {
HttpSession session = sion();
n(replace*-----------------------);
String attrName = e();
int delS=-1;
登录
if ((loginFlag)) {
User nowUser = (User) ue();old value
User nowUser = (User)ribute(loginFlag);当前session中的user
遍历所有session
for (int i = ()-1; i >= 0; i--) {
SessionAndUser tem = (i);
if
(rID().equals(e())&&!().equals(
Id())) {
n();
delS=i;
}else if(().equals(())){
rID(e());
}
}

if (delS!=-1) {
(delS).getSession().inval idate();失效时自动调用了remove方
法。也就会把它从sessions中移除了
}

}
}

public void sessionCreated(HttpSessionEvent e) {
}

public void sessionDestroyed(HttpSessionEvent e) {
}

}

在中的配制
1
2 recordSession
3 SessionListener
4
三、具体代码测试
源代码下载
四、可能存在的问题
整个个程序可能有的点没有想到。可能存在一些bug, 用于具体项目需谨慎,欢迎大
家拍砖,也希望给点建议。我再改进。
五、后来的一些思考
如果两台机器使用同一帐号在同一时刻登录系统,是不是两个帐号都可以登录成功呢。。
( 还有就是这个session List很大时,在遍历的时间段中两台机器使用同一帐号在同一时
刻登 录系统也可能会成功登录的)。很是纠结。。应该怎么控制呢?
(解决办法:经测试Listener 在系统中是一个单例,在它的方法上加上synchronize关键
字就可以保证list的线程安全 了。)

礼物英语-火石寨


拓展168-醉清风弦子


解析几何知识点-形容山的成语


坚定的近义词-压线二本学校


雨披打一成语-圆房是什么意思


今年国庆有大阅兵吗-西安电影网


小学二年级语文教学反思-泛泛之辈歌词


非主流姐妹头像-与你相随



本文更新与2021-01-04 20:34,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/495514.html

java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文
java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)随机文章