這里主要介紹
HttpSessionBindingListener接口
HttpSessionListenner接口
ServletContextListener接口
使用監聽器統計在線人數,以后用到其他的關於監聽器的功能在進行補充。
Listener:
監聽器是Web應用程序事件模型的一部分,當Web應用中的某些狀態發生
改變時,會產生相應的事件,監聽器可以接收這些事件,並可以在事件發
生時做相關處理。
監聽器可以接收事件,並完成相關的處理。
HttpSessionBindingListener接口:
如果一個對象實現了HttpSessionBindingListener接口,當這個對象唄添加
到Session或者從Session中被刪除時,Servlet容器都能夠進行識別並發出相
應的信息,在對象接收到信息后,就可以進行一系列的操作。
Void valueBound(HttpSessionBindingEvent event) 當對象被添加到Session時,容器
調用該方法來通知對象
Void valueUnbound(HttpSessionBindingEvent event)當對象從Session刪除時,容器
調用該方法來通知對象
使用HttpSessionBindingListener接口實現在線用戶統計的步驟:
1.創建HttpSessionBindingListener接口實現類
public class User implements HttpSessionBindingListener{}
2.在valueBound()和valueUnbound()方法中實現用戶數量的統計
public class User implements HttpSessionBindingListener{
public void valueBound(HttpSessionBindingEvent arg0) {
//存入session時自動調用
Constants.ONLINE_USER_COUNT ++;
}
public void valueUnbound(HttpSessionBindingEvent arg0) {
//從session中刪除時自動調用
Constants.ONLINE_USER_COUNT --;
}
}
3.在web.xml中配置監聽器
示例:
<listener>
<listener-class>com.pb.news.entity.User</listener-class>
</listener>
HttpSessionListener接口:
就是監聽HttpSession創建與銷毀的Listener
sessionCreated(HttpSessionEvent event)
HttpSession創建時
sessionDestroyed(HttpSessionEvent event)
執行session.invalidate()方法
session會話超時
在web.xml中配置監聽器
<listener>
<listener-class>監聽器完全限定名</listener-class>
</listener>
HttpSessionBindingListener接口與HttpSessionListener接口二者的區別:
HttpSessionListener只需要設置到web.xml就可以監聽整個應用中的所有session
HttpSessionBindingListener必須實例化后放入某一個session中,才能監聽
監聽范圍:
HttpSessionListener設置一次就可以監聽所有session
HttpSessionBindingListener通常是一對一
ServletContextListener接口:
ServletContextListener
contextInitialized(ServletContextEvent arg)
contextDestroyed(ServletContextEvent arg)
(未完待續。。。)