强制用户下线,目标注销该会话session。
Java
Web页面注销登录结束整个会话
可以用上文的注销方式。不过问题来了,
怎么确定要注销的那个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,查看在线用户的具体信息。 |