在我登陆成功以后,我会java
session.setAttribute("user", userMap);//设置session
因此就写了一个监听器来控制登陆的。web
package org.system.utils; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; public class OnlineUserListener implements HttpSessionAttributeListener { private final static ConcurrentHashMap<Integer, HttpSession> onlineMap = new ConcurrentHashMap<>(); @Override public void attributeAdded(HttpSessionBindingEvent event) { /* 获取session里面的用户信息 */ @SuppressWarnings("unchecked") Map<String, Object> userMap = (Map<String, Object>) event.getSession().getAttribute("user"); int userId = (int) userMap.get("id"); if (onlineMap.containsKey(userId)) { onlineMap.get(userId).invalidate(); } onlineMap.put(userId, event.getSession()); HttpSessionAttributeListener.super.attributeAdded(event); } }
在web.xml里配置监听器session
<listener> <listener-class>org.system.utils.OnlineUserListener</listener-class> </listener>