javaWeb中的監聽器

寒江孤影一線白發表於2020-11-12

事件源:三大域
ServletContext
生命週期監聽①ServletContextListener 有兩個方法——一個在出生時(服務啟動時)呼叫,一個在死亡前(伺服器關閉前 )呼叫

  • void contextInitialized(ServletContextEvent sce) :服務啟動時
  • void contextDestroyed(ServletContextEvent sce) :伺服器關閉前

屬性監聽②ServletContextAttributeListener 有3個方法——一個在新增屬性時呼叫,一個在替換屬性時呼叫,一個在移除屬性時呼叫

  • void attributeAdded(ServletContextAttributeEvent scab)
  • void attributeRemovewd(ServletContextAttributeEvent scab)
  • void attributeReplaced(ServletContextAttributeEvent scab)

HttpSession
生命週期監聽③HttpSessionListener 有兩個方法——一個在出生時(session建立時)呼叫,一個在死亡前(session消亡前)呼叫

  • sessionCreated(HttpSessionEvent event):session建立時
  • void sessionDestroyed(HttpSessionEvent event) :session消亡前

屬性監聽④HttpSessionAttributeListener 有3個方法——一個在新增屬性時呼叫,一個在替換屬性時呼叫,一個在移除屬性時呼叫

  • void attributeAdded(ServletSessionBindingEvent event)

  • void attributeRemovewd(ServletSessionBindingEvent event)

  • void attributeReplaced(ServletSessionBindingEvent event)

ServletRequest
生命週期監聽⑤ServletRequestListener 有兩個方法——一個在出生時(request建立時)呼叫,一個在死亡時(request消亡時)呼叫

  • void requestCreated(ServletRequestEvent se) :request建立時
  • void requestDestroyed(ServletRequesEvent se):request消亡時

屬性監聽⑥ServletRequestAttributeListener 有3個方法——一個在新增屬性時呼叫,一個在替換屬性時呼叫,一個在移除屬性時呼叫

  • void attributeAdded(ServletRequestAttributeEven srae)
  • void attributeRemovewd(ServletRequestAttributeEven sra

e)

  • void attributeReplaced(ServletRequestAttributeEven srae)

事件物件:

  • ServletContextEvent 中的方法 getServletContext()
  • HttpSessionEvent 中的方法 getHttpSession()
  • ServletRequestEvent 中的的方法 getServletRequest()和getServletContext()
  • ServletContextAttributeEvent 中的方法getServletContext()、getName()、getValue() 注意這裡獲取的是老值
  • ServletSessionBindingEvent 中的方法getServleSession()、getName()、getValue() 意這裡獲取的是老值
  • ServletRequestAttributeEvent 中的方法getServleREquest()、getName()、getValue() 意這裡獲取的是老值

上述已經介紹了6個監聽器(介面)了,及其方法已經方法中引數的方法

下面,再來介紹另兩個監聽器
感知監聽器:事件源:Javabean
⑦HttpSessionBindingListener 這個監聽器是監聽javaBean的,他的作用是用來檢視javabean是否被session新增或移除
用法:讓javaBean去實現HttpSessionBindingListener ,並實現其中的兩個方法

  • void valueBound(HttpSessionBindingEvent event) :Javabean被繫結到 Session
    的時候呼叫
  • void valueUnbound(HttpSessionBindingEvent event) : Javabean從 Session
    解綁的時候呼叫。

⑧HttpSessionActiveationListener(瞭解)
Tomcat會在session從時間不被使用時鈍化session物件,所謂鈍化session,就是把session通過序列化的方式儲存到硬碟檔案中。
當使用者再使用session時,Tomcat還會把鈍化的物件再活化session,所謂活化就是把硬碟檔案中的session在反序列化回記憶體。
當session被Tomcat鈍化時,session中儲存的物件也被純化,當session被活化時,也會把session中儲存的物件活化。如果某個類實現了HttpSessionActiveationListener介面後,當物件隨著session被鈍化和活化時,下面兩個方法就會被呼叫:

  • public void sessionWillPassivate(HttpSessionEvent se):當物件感知被活化時呼叫本方法;
  • public void sessionDidActivate(HttpSessionEvent se):當物件感知被鈍化時呼叫本方法;

相關文章