1. 程式人生 > >javaweb之監聽器詳解

javaweb之監聽器詳解

兩個 rec roman 虛擬 銷毀 mar host swap 技術

在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監聽器

監聽HttpSessionJava類的鈍化和活化監聽器

技術分享

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對象從一個存儲設備中恢復(活化)。

javaweb之監聽器詳解