功能:当你在一台电脑上登录了账号,然后又在另外一台电脑上登录(同一个账号),就立马提示前一台账号下线通知,就和QQ等下线通知一样。
实现思路:将用户的登录信息保存在application和session内置作用域内, 然后在首页写个定时器,轮询某ajax方法(检查application和session是否相等,不相等则弹出“用户在其他地方登录信息”)。
示例代码:
1、登录时判断该用户的application是否存在,如果已经存在,换个其他值。
HttpSession session = ServletActionContext.getRequest().getSession(); ServletContext application = session.getServletContext(); if(application.getAttribute(t_user.getName())==null){ application.setAttribute(t_user.getName(), "1"); session.setAttribute(t_user.getName(), "1"); }else{ if(application.getAttribute(t_user.getName()).toString().equals("1")){ application.setAttribute(t_user.getName(), "2"); session.setAttribute(t_user.getName(), "2"); }else{ application.setAttribute(t_user.getName(), "1"); session.setAttribute(t_user.getName(), "1"); } }
2、Ajax代码:
public String reLoginAjax() throws Exception{ HttpSession session = ServletActionContext.getRequest().getSession(); ServletContext application = session.getServletContext(); System.out.println(session.getAttribute("userName").toString()+"开始监控了。。。。。。。"); msg = "true"; String userName = session.getAttribute("userName").toString(); if(!session.getAttribute(userName).equals(application.getAttribute(userName))){ msg = "false"; } return "success"; }
3、首页加定时器,因为是轮询application内容,所有消耗很少。
var timer = null; function reLogin(){ var loginName = "aaa"; var url = 'ReLoginAjax.action'; var params = { loginName:loginName }; jQuery.post(url, params, callbackFun1, 'json'); } function callbackFun1(data){ var msg = data['msg']; if(msg=='false'){ clearInterval(timer); alert("该用户在其他地方登录!"); window.top.location.href="login.jsp"; } } timer = setInterval(function(){ reLogin(); }, 5000);
相关推荐
NULL 博文链接:https://lihao312.iteye.com/blog/1909205
NULL 博文链接:https://onestopweb.iteye.com/blog/2380986
J2EE 用监听器实现同一用户只能有一个在线.docx
通过DWR实现一个用户在同一时间内只能登陆一次,再次登录会把前次登录提示下线,类似QQ。需自己建用户表,具体字段参见代码。建表后源码可运行
2.设计实现一个图书管理系统。图书信息存放到一个数据库中。图书包含信息:图书号、图书名、作者、价格、备注字段。 要求:基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库...
Springboot+Redis实现Session共享,一个用户只能登录一次,再次登录会把上次登录给挤掉。
今天由于工作需求,需要用Django实现单用户登录。大概意思就是跟QQ一样的效果,每个账号只能一个地方登录使用,限制账号的登录次数。由于用的是Django自带的认证,然后校验用户是否登录其实就是通过Session实现的。...
主要介绍了shiro实现单点登录(一个用户同一时刻只能在一个地方登录)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
利用session监听器实现一个客户不能再两个客户端登录。
对于一个帐号在同一时间只能一个人登录,下文给大家介绍的非常详细,对java web qq 登录功能感兴趣的朋友一起看看吧
设计一个拥有注册、登录、退出功能的小程序。 一、接口提供方 (1)使用面向对象思想,将方法封装到某个类中。 (2)创建一个独立的包、模块存放这个类。 (3)提供注册功能:需要输入“手机号码”、“密码”、...
最近做了企业项目,其中有这样的需求要求同一帐号同一时间只能一个地点登陆类似QQ登录的功能。下面小编通过本文给大家分享实现思路,感兴趣的朋友参考下吧
Web项目中经常遇到的问题就是同一用户名多次登陆...本文介绍的方法是采用类似于MSN登陆的方法,第二次登陆时会把第一次的登陆注销掉,第一次登陆将会类似于MSN弹出:您的帐号已在别处被登陆,您被强迫下线的提示信息。
用户单点登录的一个简单实例。主要实现同时只能一个用户在线。
使用QT5.7开发,实现了登录界面,注册界面,用户界面和管理员界面,账号信息使用SQlite管理 ...QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。
简单实现用户注册登录系统: 包括登录页面、注册页面、主页面; 对前端提交的数据,通过js进行合法性判断(用户名只能使用字母数字下划线组成,密码只能使用数字,注册时,两次输入的密码必须相同),不符合要求,不...
用pyqt编写的用于本地通讯的登录及注册界面: 客服端登录页面实现功能: ... 2、登录时检查用户ID及密码,提示错误信息:用户不存在,密码错误。...7、如昵称信息未填写,自动分配一个昵称给用户,作为默认昵称。
这样一般都会存在一个问题:如果用户没有正常退出系统,那么他接下来继续登录的时候,因为Session没有过期等问题,会被拒绝继续登录系统,只能等待Session过期后才能登录。本文介绍的方法是采用类似于MSN登陆的方法...
Android Studio实现一个校园图书管理系统,满分课设!Android Studio实现一个校园图书管理系统,满分课设! 第一个较大的Android项目,基于Android平台的图书管理系统 涉及到的功能有学生注册、工作人员注册、图书馆...
2:给数据库添加online列 使用(数据库脚本包含在内)HashMap+HttpSessionListener, 对于非正常退出 可在 浏览器 unload 时 使用 AJAX 实现(简单的很,大家自己写吧)NOTE:解压缩后 文件夹内还有两个压缩包,压缩包...