17_7_31 登录页面统一账户不同地点被挤下
2017-07-31 17:39 小歪1991 阅读(132) 评论(0) 编辑 收藏 举报Self_Code:
model层:
package users;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
public class UserStore {
//用map放String--Session中的username; HttSeesion放 session,session中set的name=U和User
public static Map<String, HttpSession> loginUser = new HashMap<String, HttpSession>();
public final static Map<String, User> USS = new HashMap<String, User>();
}
linstener中:
package filter;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import users.User;
import users.UserStore;
@WebListener
public class SessionLinstener implements HttpSessionListener, HttpSessionAttributeListener {
public static String SESSION_LOGIN_NAME = "U";
public void attributeAdded(HttpSessionBindingEvent se) {
if (se.getName().equals(SESSION_LOGIN_NAME)) {
User u = (User) se.getValue();
HttpSession session = UserStore.loginUser.remove(u.getUsername());
UserStore.loginUser.put(u.getUsername(), se.getSession());
if (session != null) {
session.removeAttribute("U");
}
}
}
public void sessionDestroyed(HttpSessionEvent se) {
User u = (User) se.getSession().getAttribute("U");
UserStore.loginUser.remove(u.getUsername());
}
}