其实方法有很多的,我这献丑了。

使用理解java 四大作用域。

思路:理解java 四大作用域的关键。

第一个地方登陆:

1.得到请求的SessionId 和 登陆的 用户名

2.把SessionId 存到application里,用户名存到当前session里

        ActionContext ac = ActionContext.getContext();
Map<String, Object> applicationMap=ac.getApplication();
Map<String, Object> sesisonMap = ac.getSession();
       //请求的sessionId
String currentSeesionId= getRequest().getSession().getId();
applicationMap.put(loanUserE.getUname(), currentSeesionId);
sesisonMap.put(CommonVar.SSO_LOGIN_NAME_KEY,loanUserE.getUname());

第二个地方登陆:

1.获取浏览器的  SessionId 和取得  登陆的用户名

2.在当前的session 里取得  用户名对应的关键字  ,用关键字在application里获取SessionId ,

作比较,不相等就跳到登陆。

 拦截器:       

/** 初始化参数获得 */
ActionContext actionContext = arg0.getInvocationContext();
/** HttpServletRequest参数 */
HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
/** HttpServletResponse参数 */
HttpServletResponse response = (HttpServletResponse) actionContext.get(StrutsStatics.HTTP_RESPONSE);
/** Session参数 */
Map<String, Object> sessionMap = actionContext.getSession();
Map<String, Object> appcationMap = actionContext.getApplication();
String loginName = null;
// 上下文对象中的sessionId
String sessionId = null;
if (!sessionMap.isEmpty()) {
loginName = (String) sessionMap.get(CommonVar.SSO_LOGIN_NAME_KEY);
}
if (null != loginName) {
sessionId = (String) appcationMap.get(loginName);
}
// 当前会话的sessionId
String currentSessionId = request.getSession().getId(); if (!currentSessionId.equals(sessionId)) {
return "loanUserLogin";
}

java 实现 一个账号只能在一个地方登陆,其他地方被下线的更多相关文章

  1. asp.net mvc 简单实现一个账号只能在一个地方登录

    原理:  假设用户在机器A登陆后,  这时用户再次在机器B登陆,会以当前会话的SessionID作为键,用户id作为值,插入dictionary集合中,集合再保存在application(保存在服务器 ...

  2. SpringMVC实现账号只能在一处登陆

    一.问题引导 在Web开发中,实现一个账号只能在一处登陆有两种形式:1.当某个账号在某处登陆后,如果再在其他处登陆,将前一个账号挤掉:2.当某个账号登陆后,此账号在其他设备登陆提示已经登陆,无法登陆. ...

  3. 用java实现一个简单的单用户登陆功能的思路

    引用 所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录. 我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A ...

  4. HDU 3594 Cactus (强连通分量 + 一个边只能在一个环里)

    题意:判断题目中给出的图是否符合两个条件.1 这图只有一个强连通分量 2 一条边只能出现在一个环里. 思路:条件1的满足只需要tarjan算法正常求强连通分量即可,关键是第二个条件,我们把对边的判断转 ...

  5. php实现同一时间内一个账户只允许在一个终端登陆

    在账户表的基础上,我新建了一个账户account_session表,用来记录登录账户的account_id和最新一次登录成功用户的session_id,然后首先要修改登录方法:每次登录成功后,要将登录 ...

  6. FineReport:任意时刻只允许在一个客户端登陆账号的插件

    在使用FineReport报表系统中,处于账户安全考虑,有些企业希望同一账号在任意时刻智能在统一客户端登录.那么当A用户在C1客户端登陆后,该账号又在另外一个C2客户端登陆,服务器如何取判断呢? 开发 ...

  7. 一个区域只能放置一个组件,如果想在一个区域放置多个组件就需要使用Panel来装载

    五种布局管理器: Flow Layout(流式布局):按照组件添加到容器中的顺序,顺序排放组件位置.默认为水平排列,如果越界那么会向下排列.排列的位置随着容器大小的改变而改变. Panel默认的布局管 ...

  8. java保持同一时间同一账号只能在一处登录

    //登录页面 login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...

  9. Java文件中为什么只能有一个public修饰的类, 并且类名还必须与文件名相同

    当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元).每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包 ...

随机推荐

  1. Sql Server 2008 卸载重新安装失败的解决办法!(多次偿试,方法均有效!)

    Sql Server 2008 卸载重新安装失败的解决办法!(多次偿试,方法均有效!) 1.控制面板中卸载所有带sql server的程序. 2.在C盘C:\Program Files中sqlserv ...

  2. 04737_C++程序设计_第7章_类模板与向量

    例7.1 使用类模板的实例. 例7.2 求4个数中最大值的类模板程序. #include <iostream> using namespace std; template <clas ...

  3. JavaScript常用内置对象(window、document、form对象)

    由于刚开始学习B/S编程,下面对各种脚本语言有一个宏观的简单认识. 脚本语言(JavaScript,Vbscript,JScript等)介于HTML和C,C++,Java,C#等编程语言之间.它的优势 ...

  4. iOS 处理方法中的可变參数

    ## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...

  5. Android官方终于支持 Navigation Drawer(导航抽屉)模式

    在2013 google IO当天,Android团的更新了Support库,新版本(V13)的Support库中新加入了几个比较重要的功能. 添加 DrawerLayout 控件,支持创建  Nav ...

  6. SlidingMenu侧边菜单

    第一步.首先在你项目中创建一个包存放侧边菜单的类:

  7. idea15破解

    注册方法:   注册码可以沿用14的,只是在 注册时选择 License server ,填 http://idea.lanyus.com ,然后点击 OK 14的话,网上可以找到一个,根据你的用户名 ...

  8. QML Performance

    1) Limit JavaScript a) inline JavaScript:  内联的JavaScript方法;  1. 将js方法放置在Element内部; 2. 尝试将语句写在一行内; e. ...

  9. linux杂记(八)linux压缩与打包

    linux系统常见的压缩指令 一般被压缩过的档案,通常其附档名都是[*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2]等等. *.tar:tar程序打包的数据.并没有压缩过 *. ...

  10. K-Modes算法[聚类算法]

    聚类算法k-Modes的实现 <?php /* *Kmodes算法(聚类算法的实现) */ /* *获取簇的数目 */ //----------------------------------- ...