Java+MySql+Servlet+Ajax实现单态登陆,说白了就是一个账号只能在一个浏览器中登陆。

来源:互联网 发布:天津数控编程招聘信息 编辑:程序博客网 时间:2024/05/17 06:03

最近公司比较闲,所以逛CSDN得时间也多了起来,这不,上午的时候看见有人说 怎么判断同名用户已经登陆 ,在看跟帖,发现这不就是单态登陆嘛,就是每个账号只能在一个浏览器中登陆(标签页不算),闲着也是闲着,干脆自己动手写一个吧。微笑


先说说思路吧,最后贴上源代码下载路径。

其实这个需求实现起来非常简单,我们一层层慢慢刨下去。

第一个问题:我怎么知道该用户已经登陆过了?

这是第一步,其实很简单。我们写一个Map行不行?Key用来存放登陆用户的登陆名,Value用来存放与该登陆用户像匹配的Session,那么我们是不是只需要在这个map中get一下该登陆名,如果结果不为空就代表登陆了啦,如果为空就没有登陆。

第二个问题:比如账号A,被用户B登陆了,还没有注销下线,这时候用户C又来凑热闹将A登陆进去,这是时候我应该怎么样通知用户B,说你的账号已被别人登陆了。

这个应该怎么做?相信很多人都已经知道该怎么写了。对,你猜对了,我就是用Ajax异步请求来完成这个需求的,写上一个Servlet,在这个Servlet中得POST方法中写上验证该A账号是否已被再一次登陆的代码,如果已经被再次登陆,那么就返回normal,否则就返回您的账号已在另一个地方被登陆,然后通过Javascript的window.setInterval()每隔一段时间就异步访问该Servlet。

第三个问题:你说的我都懂,我也知道应该这么做,但是我该从哪里开始写呢?

其实很多人都存在这样的(学生),逻辑我都想明白了,但是我就是不知道该从哪个地方开始写代码?对与这种情况我的建议是:一层一层来,从简单到复杂,多个小功能合起来就一个大项目了,就比如这个单态登陆,那么我首先要实现的就是用户登陆,先别管什么单态不单态,先实现登陆再谈单态。那行我听你的,我就先实现了登陆在谈单态,那我登陆该从哪里写起呢?还是拿这个来说,登陆得连数据库吧?也有相关层次吧?首先把大概的层次搭上,比如类,方法,包之类的都建好,先别管代码,然后找到JDBC驱动,拷到Lib目录下,然后建上JSP页面,现在就可以开始写相关代码,在dao层写上查找用户的方法,在service层进行逻辑处理,如果用户和密码都对,那么就调转另一个页面,否则就给提示。然后加上单态也就一样了,慢慢来,一层一层刨。

PS:有人喜欢从业务层开始往里层写,也有人喜欢从持久层开始往外层写,这个看个人喜好,每个人都有自己写代码的方式,我不认为我的这种方式很好,反而我觉得很烂。


当把这两个逻辑搞懂之后,那么代码写起来就非常简单了,建议自己先根据这个思路写写,如果写不出来在看我写代码。


代码有详细注释,如果有不懂的可以问我。



下载地址:Java实现的单态登陆

原创粉丝点击