在servlet中定義了多種類型的監聽器,他們用於監聽事件源分別是servletContext,httpsession,servletrequest 這三個域對象。 servlet中監聽器主要有三類: 1,監聽三個域對象的創建和銷毀的監聽器(3個 ), servletContextListenlis ...
在servlet中定義了多種類型的監聽器,他們用於監聽事件源分別是servletContext,httpsession,servletrequest 這三個域對象。
servlet中監聽器主要有三類:
1,監聽三個域對象的創建和銷毀的監聽器(3個 ),
servletContextListenlisten監聽器:用來監聽servletcontxt域對象的創建和銷毀的監聽器:
創建:在伺服器啟動的時候,為每個web應用創建單獨的ServletContext對象。
contextInitialized用來監聽創建
銷毀:在伺服器關閉的時候,或者項目從web伺服器中移除的時候。
contextDsttroyed用來監聽銷毀
創建監聽器就是新建一個類然後實現servletContextListen
然後在配置xml(用eclipse創建lissten文件系統會自動生成)
<listener>
<listen_class>監聽器名稱的全路徑</>
</listener>
HttpSessionListener監聽器
用來監聽HttpSession對象的創建和銷毀
n 伺服器端第一次調用getSession()方法時候。
l 銷毀:
n 非正常關閉伺服器(正常關閉伺服器session會被序列化)。
n Session過期(預設過期時間30分鐘)。
n 手動調用session.invalidate()方法。
套路同上
ServletRequestListener監聽器
l 用戶監聽ServletRequest對象的創建和銷毀
l 創建
n 從客戶端向伺服器發送一次請求,伺服器就會創建request對象。
l 銷毀
伺服器對這次請求作出了響應之後,request對象就銷毀了。
2,監聽三個域對象的屬性變更(屬性添加,移除,替換)的監聽器(3個)
ServletContextAttributeListener
l 監聽ServletContext對象中的屬性變更(屬性添加,移除,替換)的監聽器
HttpSessionAttributeListener
l 監聽HttpSession對象中的屬性變更(屬性添加,移除,替換)的監聽器
ServletRequestAttributeListener
l 監聽ServletRequest對象中的屬性變更(屬性添加,移除,替換)的監聽器
3,監聽httpsession中Javabean的狀態改變(鈍化,活化,綁定,解綁)的監聽(2個)
保存在Session域中的Java類可以有多種狀態:綁定到session中;從session中解除綁定;隨session對象持久化到一個存儲設備中(鈍化);隨session對象從一個存儲設備中恢復(活化)。
Servlet對方中定義了兩個特殊的監聽的介面來幫助Java類瞭解自己在Session域中的狀態:
HttpSessionBindingListener介面
HttpSessionActivationListener介面,
實現這兩個介面的類不需要在web.xml中進行配置。
HttpSessionBindingListener監聽器:
監聽Java類在HttpSession中的綁定和解除綁定的狀態的監聽器:
HttpSessionActivationListener監聽器
監聽HttpSession中Java類的鈍化和活化監聽器
l 配置完成session的序列化和反序列化
Context標簽可以配置在:
tomcat/conf/context.xml:所有tomcat下虛擬主機和虛擬目錄下的工程都會序列化session
tomcat/conf/Catalina/localhost/context.xml:localhost虛擬主機下的所有項目會序列化session
工程/META-INF/context.xml:當前工程才會序列化session。
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="itheima"/>
</Manager>
</Context>
保存在Session域中的Java類可以有多種狀態:綁定到session中;從session中解除綁定;隨session對象持久化到一個存儲設備中(鈍化);隨session對象從一個存儲設備中恢復(活化)。