監聽器Listener小記
一、監聽器:監聽某一個事件的發生,狀態的改變
監聽器的內部機制,其實就是介面回撥
監聽器的實現:
1、定義一個類,實現介面
2、註冊或配置監聽器
<listener>
<listener-class>監聽器介面實現類名</listener-class>
</listener>
二、web監聽器(總共8個,劃分為三種類型)
型別一:監聽三個作用域建立和銷燬
request --- httpServletRequest
session --- httpSession
application --- ServletContext
1、ServletContextListener
servletContext建立:
1.啟動伺服器的時候
servletContext銷燬:
2.關閉伺服器,從伺服器移除專案
2、ServletRequestListener
request建立:
訪問伺服器上的任意資源都會有請求出現
訪問html:會
訪問jsp:會
訪問Servlet:會
request銷燬:
伺服器已經對此次請求做出了響應
3、HttpSessionListener
session建立:
只要呼叫getSession
訪問html:不會
訪問jsp:會
訪問Servlet:會
session銷燬:
超時、非正常關閉
正常關閉伺服器
作用:
小例子:
ServletContextListener
利用它來在ServletContext建立的時候:
1、完成想要初始化的工作
2、執行自定義任務排程,執行某些任務,如Timer
HttpSessionListener
統計線上人數
型別二:監聽三個作用域屬性狀態變更
request --- ServletRequestAttributeListener
session --- HttpSessionAttributeListener
servletContext --- ServletContextAttributeListener
可以監聽在作用域中值新增、替換、刪除
型別三:監聽httpSession裡面儲存的值的狀態變更
這一類監聽器不用註冊
1、HttpSessionBindingListener
2、HttpSessionActivationListener
鈍化(序列化)
把記憶體中的資料,儲存到硬碟上
活化(反序列化)
把硬碟中的資料讀取到記憶體中
session的鈍化、活化意義:session中的值可能有很多,可以把長時間不會用到的鈍化到硬碟上,下次使用的時候再活化,即拿到記憶體中使用
如何讓session在一定時間內鈍化,該如何配置:<context></context>
1、在tomcat裡面 conf/context.xml
對所有執行在這個伺服器的專案生效
2、在conf/Catalina/localhost/context.xml
對localhost生效。如localhost:8080
3、在自己的web工程專案中的META-INF/context.xml
只在當前的工程生效