第一步:自建一个继承自HttpSessionListener的 监听器

package com.zhph.util;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

/**

* session 监听事件

* @author HAXF010

*

*/

public class SessionHelper implements HttpSessionListener {

/* Session创建事件 */

public void sessionCreated(HttpSessionEvent event) {

}

/* Session失效事件 */

public void sessionDestroyed(HttpSessionEvent event) {

SessionLockHelper.moveSession(event.getSession());

}

}

第二步:在web.xml中配置第一步创建的监听类  ; SessionHelper 是自己的监听类

com.zhph.util.SessionHelper

第三步:创建工具类 SessionLockHelper.java

package com.zhph.util;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpSession;

import com.zhph.vo.LoginUser;

public class SessionLockHelper {

public static Mapmap = new HashMap();

//添加session到集合;用户的id 作为 session 的 key

public static void putSession(HttpSession session) {

LoginUser user = (LoginUser) session.getAttribute("user");

map.put(user.getId(), session);

}

public static void moveSession(HttpSession session) {

LoginUser user = (LoginUser) session.getAttribute("user");

map.remove(user.getId());

}

//让对应用户的会话失效

public static void destroyedSession(LoginUser user) {

System.out.println("会话失效了。");

HttpSession session = map.get(user.getId());

session.invalidate();

}

}

第四步:当用户登录成功时调用 SessionLockHelper.putSession(HttpSession session)方法

第五步:对于要强制注销的用户调用SessionLockHelper.destroyedSession(LoginUser user)方法。

第六步:用户所有的请求的拦截器判断获取到当前用户的Session 都获取不到了,然后代码跳转到登录页面;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐