天天看点

单用户登陆、在线用户统计Java

登陆成功代码:

MySession.getInstance().deleteSession(user.getPhone(),session);

MySession.getInstance().addSessionIdToPhone(session, user.getPhone());

WEB:配置

 <listener>  

           <listener-class>cn.yitongworld.utils.SessionListener</listener-class>  

  </listener> 

package cn.yitongworld.utils;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class SessionListener implements HttpSessionListener{

@Override

public void sessionCreated(HttpSessionEvent event) {

MySession.getInstance().addSession(event.getSession());

}

@Override

public void sessionDestroyed(HttpSessionEvent event) {

MySession.getInstance().deleteSession(event.getSession());

}

}

package cn.yitongworld.utils;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpSession;

public class MySession {

private static MySession instance = new MySession();

private static Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();

private static Map<String, String> sessionIdToPhone = new HashMap<String, String>();

private static Map<String, String> phoneToSessionId = new HashMap<String, String>();

private MySession() {

}

public static MySession getInstance() {

return instance;

}

public synchronized void addSession(HttpSession session) {

if (session != null) {

sessionMap.put(session.getId(), session);

}

}

public synchronized void deleteSession(HttpSession session) {

if (session != null) {

sessionMap.remove(session.getId());

phoneToSessionId.remove(sessionIdToPhone.get(session.getId()));

sessionIdToPhone.remove(session.getId());

}

}

public synchronized void addSessionIdToPhone(HttpSession session,

String phone) {

if (session != null) {

sessionIdToPhone.put(session.getId(), phone);

phoneToSessionId.put(phone, session.getId());

}

}

public synchronized void deleteSession(String phone, HttpSession session) {

String sessionId = phoneToSessionId.get(phone);

sessionIdToPhone.remove(sessionId);

phoneToSessionId.remove(phone);

HttpSession session2 = sessionMap.get(sessionId);

if (session2 != null && !session2.getId().equals(session.getId())) {

session2.invalidate();

sessionMap.remove(session2.getId());

}

}

public synchronized void lginOut(String phone) {

String sessionId = phoneToSessionId.get(phone);

sessionIdToPhone.remove(sessionId);

phoneToSessionId.remove(phone);

HttpSession session = sessionMap.get(sessionId);

if (session != null) {

session.invalidate();

sessionMap.remove(session.getId());

}

}

public static HttpSession getSessionByPhone(String phone){

try{

String sessionId = phoneToSessionId.get(phone);

return sessionMap.get(sessionId);

}catch(Exception e){

e.printStackTrace();

return null;

}

}

}