1. 程式人生 > >監聽器Listener小記

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

只在當前的工程生效