JavaWeb(十)---監聽器(Listener)
阿新 • • 發佈:2018-12-25
概述
- 監聽器是一個介面,內容由自己實現
- 監聽器需要註冊(web.xml中)
- 監聽器中方法,會在特殊事件發生時被呼叫
- JavaWeb中有八大監聽器
域監聽器(6個)
JavaWeb三大域:ServletContext、HTTPSession、ServletRequest
每一個域有兩個監聽器;
ServletContext
- 生命週期監聽:ServletContextListener
- 屬性監聽:ServletContextAttributeListener
HTTPSession
- 生命週期監聽:HTTPSessionListener
- 屬性監聽:HTTPSession
ServletRequest
- 生命週期監聽:ServletRequestListener
- 屬性監聽:ServletRequestAttributeListener
生命週期監聽方法
- 建立時執行
- 銷燬時執行
屬性監聽方法
- 新增屬性時
- 刪除屬性時
- 替換屬性時
感知監聽(兩個)
監聽器作用在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>