1. 程式人生 > >J2EE中統計當前線上人數——HttpSessionBindingListener和HttpSessionListener

J2EE中統計當前線上人數——HttpSessionBindingListener和HttpSessionListener

package demo;  
  
import java.util.ArrayList;   
import java.util.List;   
import javax.servlet.ServletContext;   
import javax.servlet.ServletContextEvent;   
import javax.servlet.ServletContextListener;   
import javax.servlet.http.HttpSessionAttributeListener;   
import javax.servlet.http.HttpSessionBindingEvent;   
import javax.servlet.http.HttpSessionEvent;   
import javax.servlet.http.HttpSessionListener;    

public class OnlineDemo implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {   
   
    // 宣告一個ServletContext物件   
    private ServletContext application = null;   
  
    public void contextInitialized(ServletContextEvent sce) {   
        // 容器初始化時,向application中存放一個空的容器   
        this.application = sce.getServletContext();   
        this.application.setAttribute("alluser", new ArrayList());   
    }   
  
    public void contextDestroyed(ServletContextEvent sce) {   
    }   
  
    public void sessionCreated(HttpSessionEvent se) {   
    }   
  
    public void sessionDestroyed(HttpSessionEvent se) {   
        // 將使用者名稱稱從列表中刪除   
        List l = (List) this.application.getAttribute("alluser");   
        String value = (String) se.getSession().getAttribute("uname");   
        l.remove(value);   
        this.application.setAttribute("alluser", l);   
    }   
  
    public void attributeAdded(HttpSessionBindingEvent se) {   
        // 如果登陸成功,則將使用者名稱儲存在列表之中   
        List l = (List) this.application.getAttribute("alluser");   
        l.add(se.getValue());   
        this.application.setAttribute("alluser", l);   
    }   
  
    public void attributeRemoved(HttpSessionBindingEvent se) {   
    }   
  
    public void attributeReplaced(HttpSessionBindingEvent se) {   
    }   
}