其实方法有很多的,我这献丑了。
使用理解java 四大作用域。
思路:理解java 四大作用域的关键。
第一个地方登陆:
1.得到请求的SessionId 和 登陆的 用户名
2.把SessionId 存到application里,用户名存到当前session里
ActionContext ac =ActionContext.getContext();
Map applicationMap=ac.getApplication();
Map 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 sessionMap =actionContext.getSession();
Map 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";
}
原文:http://www.cnblogs.com/loveweiwei/p/4139668.html