1)概念:web
1)監聽ServletContext、HttpSession和ServletRequest等域對象的建立事件、銷燬事件、域對象中屬性發生改變的事件。 2)當域對象的狀態發生變化的時候,服務器自動調用監聽器對象中的方法。
2)監聽對象:spring
1)ServletContext 2)HttpSession 3)ServletRequest
3)監聽內容:數據庫
監聽對象的建立、銷燬以及對象屬性發生改變的事件
4)分類:緩存
按監聽的對象劃分: 1)ServletContext對象監聽器: 實現ServletContextListener、ServletContextAttributeListener接口 應用:做爲定時器、加載全局屬性對象、建立全局數據庫鏈接、加載緩存信息等 2)HttpSession對象監聽器: 實現HttpSessionListener、HttpSessionAttributeListener接口 web.xml中配置session超時時間(單位:分): <session-config> <session-timeout>10</session-timeout> </session-config> 應用:統計在線人數、記錄訪問日誌等 3)ServletRequest對象監聽器: 實現ServletRequestListener、ServletRequestAttributeListener接口 應用:讀取request參數,記錄訪問歷史 按監聽的事件劃分: 1)監聽域對象的建立事件、銷燬事件的監聽器: 實現ServletContextListener、HttpSessionListener、ServletRequestListener接口 2)監聽域對象中屬性的增長事件、屬性的刪除事件的監聽器: 實現ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。 3)監聽綁定到HttpSeesion中的某個對象的狀態變化事件的監聽器(建立普通JavaBean): 實現接口及方法:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法) HttpSession中的對象狀態: 綁定: 經過setAttribute()方法將bean保存到session對象中 解除綁定: 經過removeAttribue()方法解除綁定 鈍化(序列化): 將session對象持久化到存儲設備上 活化(反序列化): 將session對象從存儲設備上進行恢復 session鈍化機制: 1)把服務器不常使用的session對象暫時序列化到系統文件或者是數據庫中,當使用時反序列化到內存中,整個過程由服務器自動完成; 2)session的鈍化機制由SessionManager管理,建立一個普通的JavaBean綁定和解除須要實現HttpSessionBindingListener接口 3)JavaBean必須實現Serializable接口
5)實現:服務器
web.xml <listener> <listener-class>完整類名</listener-class> </listener> 舉例: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <session-config> <session-timeout>60</session-timeout> </session-config> 監聽器的啓動順序:按照web.xml的配置順序來啓動
6)注意:session
加載順序:監聽器>過濾器>Servlet