package deep.web;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServlet;
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 org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import deep.zero.bean.Player;
import deep.zero.svc.PlayerSvcImpl;
public class OnlineListener extends HttpServlet implements HttpSessionListener,
HttpSessionAttributeListener {
/**
*
*/
private static final long serialVersionUID = -724585474693809304L;
public static Map map = new HashMap();
private String user_code;
public static Map sMap = new HashMap();
public Map mapx = new HashMap();
public static int getOnlineGuest() {
int OnlineGuest = 0;
for (Iterator it = map.keySet().iterator(); it.hasNext();) {// entrySet()
Object key = it.next();
if (null != map.get(key)) {
OnlineGuest++;
}
}
return OnlineGuest;
}
public Map getOnlinePlayer() {
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
PlayerSvcImpl ps = (PlayerSvcImpl)wac.getBean("playerSvcImpl");
for (Iterator it = map.keySet().iterator(); it.hasNext();) {// entrySet()
Object key = it.next();
if (null != map.get(key) && !"".equals(map.get(key))) {
System.out.println(map.get(key));
Player player = ps.getByCode(map.get(key));
mapx.put(map.get(key), player);
}
}
return mapx;
}
public void attributeAdded(HttpSessionBindingEvent evt) {
// TODO Auto-generated method stub
HttpSession session = evt.getSession();
user_code = (String) session.getAttribute("p_code");
System.out.println("å建session"+user_code+session.getId());
map.put(session, user_code);
System.out.println(map.size());
if(evt.getSession() != null && evt.getSession().getAttribute("p_code") != null){
System.out.println(evt.getSession().getAttribute("p_code"));
sMap.put((String)evt.getSession().getAttribute("p_code"), session);
}
}
public void attributeRemoved(HttpSessionBindingEvent evt) {
// TODO Auto-generated method stub
}
public void attributeReplaced(HttpSessionBindingEvent evt) {
// TODO Auto-generated method stub
HttpSession session = evt.getSession();
user_code = (String) session.getAttribute("p_code");
if (user_code == null) {
map.remove(session);
} else
map.put(session, user_code);
System.out.println(map.size()+user_code);
}
//å°ææsessionæ¾å
¥map
public void sessionCreated(HttpSessionEvent e) {
}
//
public void sessionDestroyed(HttpSessionEvent e) {
}
//éè¿nicknameå¾å°session
public static HttpSession getSession(String nickname){
return sMap.get(nickname);
}
}