配置文件
<listener>
<listener-class>com.SessionCount</listener-class>
</listener>
实现HttpSessionListener接口监听sesson事件
package com;
import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCount implements HttpSessionListener,
ServletContextListener, ServletContextAttributeListener,
ServletContainerInitializer {
private int count;
private ServletContext context = null;
public SessionCount() {
count = 0;
}
public void setContext(HttpSessionEvent event) {
event.getSession().getServletContext()
.setAttribute("onLine", new Integer(count));
}
@Override
public void onStartup(Set<Class<?>> arg0, ServletContext arg1)
throws ServletException {
}
@Override
public void attributeAdded(ServletContextAttributeEvent arg0) {
PrintLog("attributeAdded/" + arg0.getName() + "-" + arg0.getValue());
}
@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
PrintLog("attributeRemoved/" + arg0.getName() + "-" + arg0.getValue());
}
@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
PrintLog("attributeReplaced/" + arg0.getName() + "-" + arg0.getValue());
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
this.context = null;
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
this.context = arg0.getServletContext();
}
@Override
public void sessionCreated(HttpSessionEvent event) {
count++;
setContext(event);
PrintLog("onLine_:" + count);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
count--;
setContext(event);
PrintLog("onLine_:" + count);
}
private void PrintLog(String log) {
System.out.println("log:" + log);
}
}