Struts2的系统怎么做到同一帐号不能多人登陆?
来源:百度知道 编辑:UC知道 时间:2024/05/28 08:24:29
我用的session是这种,
Map session = ActionContext.getContext().getSession();
也没有通过sessionID来找到这个session的方法啊。
别说啥session.clear()啊。总得先得到再clear吧。直接clear只会clear掉你自己的。不能强制别人下线。
在网上查了好久也没查到。郁闷了。如果有能解决的我追加60分。
一楼跟没说一样
思路是这样的。每个用户登陆成功的时候获取他的sessionId 并且把他的用户名当做key sessionId当做value来存到Application里
(也就是容器里。Application是一个容器共用一个)
具体实现:
import com.opensymphony.xwork2.ActionContext;
ActionContext ac = ActionContext.getContext();
Map sessionMap = ac.getSession();
Map applicationMap = ac.getApplication();//struts2 吧application这些对象做了封装 所以你对这个map操作也就是对Application操作。(如果你不习惯这样做 也可以用原始的方法)
application..put(你的用户名, sessionId );
并且要在session里存入你的用户名。
sessionMap.put("username", 你的用户名 );
---------------------------------------------
如果有账号登录了。先去applicationMap里找一下。看这个账户有没有登陆
String lu = applicationMap.get(username);
if(lu == null){
在applicationMap 里存入相应信息。也就是上面的代码
} else{
如果不等于空,就获取自己的sessionId 然后放入application里把之前的登陆的那个session覆盖掉。
application..put(username, mySessionId );这里的mySessionId 是自己的sessionId
}
这样做了以后 你要修改你的程序,在每次请求的时候都去你的s