web的監聽器,你需要知道這些...
Listener是Servlet規範的另一個高階特性,它用於監聽java web程式的事件,例如建立、修改、刪除session,request,context等,並觸發相應的處理事件,這個處理事件是由web容器回掉的。
學過安卓開發的同學一定很熟悉view.setonClickLister();這樣的對安卓控制元件的監聽。java web也是這樣的 ,根據不同的listner 和不同的event,可以完成相應的處理事件。
Listerner分為八種,前三種是用於監聽物件的建立和銷燬,中間三種用於監聽物件屬性的變化,後兩種用於監聽Session內物件。
-
httpSessionListner: 監聽session的建立與銷燬,用於收集線上使用者資訊。
-
servletContextListener:監聽context的建立與銷燬,context代表當前web應用,該listener可用於啟動時獲取web.xml的初始化引數。
-
servletRequestListener: 監聽request 的建立與銷燬。
-
httpSessionAttributeListener 監聽session的種屬性變化
-
ServletContextAttributeListener
-
ServletRequestAttributeListener
-
HttpSessionBindingListener,監聽物件存入或者移除 session
-
httpSessionActivationListener,鈍化和重新載入 session的監聽
直接上程式碼,下面監聽了這三個物件建立銷燬。
需要在web.xml中配置:
- httpSessionAttributeListener 監聽session的種屬性變化
- ServletContextAttributeListener
- ServletRequestAttributeListener
以上三種方法用於監聽session ,context,request的屬性發生變化,雅思培訓一般多少錢例如新增、更新、移除。
下面以session的屬性變化為例子:
web.xml配置,此處省略。
- HttpSessionBindingListener,當物件被放到session裡執行valueBond();當物件被移除,執行valueUnbond();
- httpSessionActivationListener,伺服器關閉,會將session的內容儲存在硬盤裡,這個過程叫鈍化;伺服器重啟,會將session的內容從硬碟中重新載入。鈍化時執行sesionWillPassivate(),重新載入sessionDidActivate();
舉個例子:
init.jsp
destroy.jsp
當訪問init.jsp,再訪問destroy.jsp;再訪問init,jsp,再關閉伺服器,重啟;log日誌如下:
valueBound Name:currentUser
valueUnbound Name:currentUser
sessionWillPassivate [email protected]
sessionDidActivate
[email protected]
jsp中顯示:
這是一個簡答的統計線上人數的方法,如果你需要知道這些人來自哪裡,需要配合httpRequestListener配合,也可以實現單登陸,在這裡不寫程式碼了。