1. 程式人生 > >JavaWeb(十)---監聽器(Listener)

JavaWeb(十)---監聽器(Listener)

概述

  1. 監聽器是一個介面,內容由自己實現
  2. 監聽器需要註冊(web.xml中)
  3. 監聽器中方法,會在特殊事件發生時被呼叫
  4. JavaWeb中有八大監聽器

域監聽器(6個)

JavaWeb三大域:ServletContext、HTTPSession、ServletRequest

每一個域有兩個監聽器;

ServletContext

  1. 生命週期監聽:ServletContextListener
  2. 屬性監聽:ServletContextAttributeListener

HTTPSession

  1. 生命週期監聽:HTTPSessionListener
  2. 屬性監聽:HTTPSession

ServletRequest

  1. 生命週期監聽:ServletRequestListener
  2. 屬性監聽:ServletRequestAttributeListener

生命週期監聽方法

  1. 建立時執行
  2. 銷燬時執行

屬性監聽方法

  1. 新增屬性時
  2. 刪除屬性時
  3. 替換屬性時

感知監聽(兩個)

​ 監聽器作用在JavaBean上.JavaBean可以自己感知在session中狀態.​ 這類監聽器不用配置.

物件型別 對應的監聽器
HttpSession HttpSessionBindingListener(繫結,解除繫結)
HttpSession HttpSessionActivationListener(鈍化和活化)

​HttpSessionBindingListener(繫結,解除繫結)

監聽HTTPSession中JavaBean的繫結和解除繫結狀態

è¿éåå¾çæè¿°

 

HttpSessionActivationListener(鈍化和活化)

è¿éåå¾çæè¿°

sessionDidActivate(HttpSessionEvent se); – 活化,

SessionWillPassivate(HttpSessionEvent se); – 鈍化,

注意:

session序列化

伺服器關閉時,伺服器會把session儲存到硬碟中。以sessionID命名,以“.session”作為副檔名。一個session就一個檔案。其中session包含的內容是有實現java.io.Serializable 介面的類的例項

當Tomcat再次開啟時,session物件重新被載入

在Tomcat的  conf/context.xml中加入<Manager pathname="" />  就可以關閉序列化

session的鈍化和活化

鈍化:將session長期不活動,則將記憶體中session序列化為檔案儲存在硬碟中

活化:將硬碟中的session檔案加入記憶體中。

實現方法:

將下面配置檔案放到tomcat\conf\catalina\localhost目錄下!檔名稱為專案名稱。

當然也可以放到tomcat的config下的context.xml中,這樣就是對Tomcat下所有應用都生效

<Context>
	<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"[如果session在1分鐘內沒有使用,那麼Tomcat就會鈍化它]>
		<Store className="org.apache.catalina.session.FileStore" directory="mysession"[把session序列化到Tomcat\work\Catalina\localhost\listener\mysession目錄下。]/>
	</Manager>
</Context>