Java Web 强制用户下线,在线用户数量

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 20:05   11   0

强制用户下线,目标注销该会话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,查看在线用户的具体信息。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP