17_7_31 登录页面统一账户不同地点被挤下

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());

	}
}
原文地址:https://www.cnblogs.com/du1991/p/7264322.html