監聽器就是監聽某個對象的的狀態變化的組件html
監聽器的相關概念:程序員
事件源:被監聽的對象 ----- 三個域對象 request session servletContextweb
監聽器:監聽事件源對象 事件源對象的狀態的變化都會觸發監聽器 ---- 6+2面試
註冊監聽器:將監聽器與事件源進行綁定spring
響應行爲:監聽器監聽到事件源的狀態變化時 所涉及的功能代碼 ---- 程序員編寫代碼數據庫
第一維度:按照被監聽的對象劃分:ServletRequest域 HttpSession域 ServletContext域apache
第二維度:監聽的內容分:監聽域對象的建立與銷燬的和監聽域對象的屬性變化的服務器
1)Servlet域的生命週期session
什麼時候建立:服務器啓動建立優化
什麼時候銷燬:服務器關閉銷燬
2)監聽器的編寫步驟(重點):
a、編寫一個監聽器類去實現監聽器接口
b、覆蓋監聽器的方法
c、須要在web.xml中進行配置---註冊
3)監聽的方法:
4)配置文件:
5)ServletContextListener監聽器的主要做用
域對象的通用的方法:
綁定狀態:就一個對象被放到session域中
解綁狀態:就是這個對象從session域中移除了
鈍化狀態:是將session內存中的對象持久化(序列化)到磁盤
活化狀態:就是將磁盤上的對象再次恢復到session內存中
面試題:當用戶很對時,怎樣對服務器進行優化?
鈍化
須要的對象實現HttpSessionBindingListener接口,實現下面的兩個方法。
(3)鈍化與活化的監聽器HttpSessionActivationListener
能夠經過配置文件 指定對象鈍化時間 --- 對象多長時間不用被鈍化
在META-INF下建立一個context.xml
<Context> <!-- maxIdleSwap:session中的對象多長時間不使用就鈍化 --> <!-- directory:鈍化後的對象的文件寫到磁盤的哪一個目錄下 配置鈍化的對象文件在 work/catalina/localhost/鈍化文件 --> <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"> <Store className="org.apache.catalina.session.FileStore" directory="itcast205" /> </Manager> </Context>