强制用户下线,目标注销该会话session。
可以用上文的注销方式。不过问题来了,
怎么确定要注销的那个session。
1、自建一个继承自HttpSessionListener的监听器,可配置在we.xml中:
如
<listener>
<listener-class>com.xhj.helper.SessionHelper</listener-class>
</listener>
package com.xhj.helper;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
public class SessionHelper implements HttpSessionListener {
/* Session创建事件 */
public void sessionCreated(HttpSessionEvent event) {
}
/* Session失效事件 */
public void sessionDestroyed(HttpSessionEvent event) {
LockHelper.moveSession(event.getSession());
}
}
package com.xhj.helper;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import com.xhj.pojo.Sys_user;
public class LockHelper {
static Map<String, HttpSession> map=new HashMap<String, HttpSession>();
public static void putSession(HttpSession session){
Sys_user user=(Sys_user)session.getAttribute("userSession");
map.put(user.getId(), session);
}
public static void moveSession(HttpSession session){
Sys_user user=(Sys_user)session.getAttribute("userSession");
map.remove(user.getId());
}
public static void destroyedSession(Sys_user user){
HttpSession session=map.get(user.getId());
session.invalidate();
}
}
2、当用户登录成功时调用 putSession(HttpSession session)方法
3、对于要强制注销的用户调用destroyedSession(Sys_user user)方法。
4、可以根据map,查看在线用户的具体信息。