Listener監聽器

Listener監聽器概述

Web應用在Web容器中運行時,Web應用內部會不斷地發生各種事件:如Web應用被啓動、Web應用被停止,用戶session開始、用戶session被結束、用戶請求到達等。Servlet API提供很多監聽器來監聽Web應用的內部事件,從而允許當Web內部發時回調事件監聽器內的方法。

Servlet監聽器是Servlet規範中定義的一種特殊類,用於監聽Web應用中的ServletContext、HttpSession和ServletRequest等域對象的創建和銷燬事件,以及監聽這些域對象中的屬性發生修改的事件。

Servlet規範爲每種事件監聽器定義了相應接口,編寫事件監聽器時只要實現這些接口即可。有些事件監聽器要在web應用的web.xml中註冊才能發佈,web.xml文件中可以註冊多個Servlet事件監聽器。web服務器按它們在web.xml中的註冊順序加載這些事件監聽器。事件監聽器的註冊和調用都由web容器自動完成的,當發生被監聽對象被創建、修改和銷燬等事件時就會調用相應的事件監聽對象的相應方法,執行用戶在這些方法中編寫的事件處理代碼。一個web應用只爲每個事件監聽類創建一個實例對象,這樣就可能發生 多個線程同時調用一個事件監聽對象的情況,造成多線程安全問題。

監聽器種類

按監聽器對象不同Servlet2.4規範定義的事件有三種:

  • 用於監聽應用程序環境對象(ServletContext)的事件監聽器
  • 用於監聽用戶會話對象(HttpSession)的事件監聽器
  • 用於監聽請求消息對象(ServletRequest)的事件監聽器


按監聽事件類型可分爲:
1.用於監聽域對象自身的創建和銷燬的事件監聽器
2.用於監聽域對象中的屬性的增加和刪除的事件監聽器
3.用於監聽綁定到HttpSession域中的某個對象的狀態的事件監聽器


常用web事件監聽器接口

  • ServletContextListener:用於監聽web應用的啓動和關閉
  • ServletContextAttributeListener:用於監聽ServletContext範圍(application)內屬性的改變
  • ServletRequestListener:用於監聽用戶
  • ServletRequestAttributeListener:用於監聽ServletRequest範圍(request)內屬性的改變
  • HttpSessionListener:用於監聽HttpSession的開始和結束
  • HttpSessionnAttributeListener:用於監聽HttpSession範圍(session)內屬性的改變


使用監聽器

未完,待續 … …

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章