javaweb 監聽器的常用使用


監聽器是Servlet規范中定義的一種特殊類,用於監聽ServletContext、HttpSession、ServletRequest等域對象的創建與銷毀事件和監聽域對象的屬性發生修改的事件,可以在發生前和發生后做一些必要的處理。簡單來說就是用來監聽一個特定的事件是否發生改變。

監聽器按照監聽的對象划分為3種:

用於監聽應用程序環境(ServletContext)對象的事件監聽器。

用於監聽用戶會話對象(HttpSession)的事件監聽器。

用於監聽請求消息對象(ServletRequest)的事件監聽器。

按照監聽的事件划分

1.監聽域對象自身的創建和銷毀的事件監聽器。

2.創建域對象中的屬性的增加和刪除的事件監聽器。

被監聽對象及其對應的監聽器如下所示:

ServletContext是一個全局的儲存信息的空間,其監聽器從服務器啟動調用contextInitialized方法到服務器停止contextDestoryed方法,對於一個web項目,ServletContext對象只能有一個,而ServletContextListener卻可以有多個。ServletContext主要用於定時器和全局屬性對象。

HttpSession監聽器在一次會話發生時被調用sessionCreated方法會話結束時調用sessionDestoryed方法。在一個web項目中可以有多個HttpSession對象,1個HttpSession可以注冊多個HttpSessionListener。HttpSession常用於記錄訪問人數和訪問日志。

ServletRequest監聽器在客戶端請求事件發生時被調用requestInitialized方法事件完成時requestDestoryed方法。一個ServletRequest同樣可以注冊多個ServletRequestListener,ServletRequest常用於讀取參數和記錄訪問歷史。

3.監聽綁定到HttpSession域中的某個對象的狀態的事件監聽器

HttpSessionBindingListener監聽器:(不需要web.xml配置)valueBound方法綁定session對象,valueUnbound方法解綁session對象。所謂綁定就是調用session.setAttribute()方法將實現HttpSessionBindingListener接口的對象添加到session中。

HttpSessionListener只需要設置到web.xml中就可以監聽整個應用中的所有session。HttpSessionBindingListener必須實例化后放入某一個session中,才可以進行監聽。

HttpSessionActivationListener監聽器:(不需要web.xml配置)sessionWillPassivate方法鈍化,sessionDidActivate方法活化,實現此接口的JavaBean,可以感知自己被活化(從硬盤到內存)和鈍化(從內存到硬盤)的過程。如果需要同時保存Session中的JavaBean則JavaBean也要實現Serializable序列化接口。實現此接口的JavaBean與HttpSessionBindingListener一樣,不必配置到web.xml中。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM