|
ServletContextAttributeListener 監(jiān)聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。 ServletContextListener監(jiān)聽ServletContext。
ServletContextListener 接口 contextInitialized 初始化方法 contextDestroyed 銷毀方法
Servlet 2.4版在事件監(jiān)聽器中加入了ServletRequest監(jiān)聽器,包括:ServletRequestListener, ServletRequestAttributeListener ,用來管理和控制與ServletRequest動作有關的事件。 對于ServletRequest事件,當request初始化、銷毀或者request屬性的增加、刪除和替換時,事件監(jiān)聽類得到通知。
下表列出了 ServletRequest的事件類型,對應特定事件的監(jiān)聽類必須實現(xiàn)的接口和當事件發(fā)生時調用的方法。
HttpSessionListener 接口 Http會話(Seesion)與請求(Request)與ServletContext用法相當。需指出,Request監(jiān)聽器在Tomcat 4.1不能調試,故升級到Tomcat 5.0才可以,所以可以肯定RequestListener是符合Servlet2.4新規(guī)范的,需用tomcat5.0以上版本。 利用HttpSessionListener接口可針對HTTP會話建立一個“監(jiān)聽器類”。只要Web應用程序內新增了一個HTTP會話,Servlet 容器就會將該事件(HttpSessionEvent)轉交給適當?shù)摹氨O(jiān)聽器類”進行處理(必須事先配置web.xml)。 下表是HttpSessionListener接口內定義的兩個方法,只要是實現(xiàn)該接口的“監(jiān)聽器類”,就必須包含這兩種方法。
HttpSessionActivationListener 接口 當Web應用程序的會話必須跨越其他服務器時,實現(xiàn)HttpSessionActivationListener接口的“監(jiān)聽器類”將會收到會話轉移的事 件。
舉例來說,會話S必須從服務器A轉移到服務器B,此時Servlet容器會在S轉移前產(chǎn)生一個會話“被動(passive)”事件,該事件由 HttpSessionActivationListener接口的sessionWillPassivate()方法予以回應。當S轉移到服務器B以 后,Servlet容器會再產(chǎn)生一個會話“啟動”(activate)事件,該事件由HttpSessionActivationListener接口的 sessionDidActivate()方法予以回應。 HttpSessionAttributeListener 接口 HttpSessionAttributeListener接口與ServletContextAttributeListener非常類似,前者是針對 HTTP會話所設計的“監(jiān)聽器接口”,后者則是針對Servlet運行環(huán)境(context)所設計的“監(jiān)聽器接口”,該接口定義的方法見下表。
當HTTP會話(HttpSession對象)內新增、置換或刪除某個屬性時將會產(chǎn)生一個事件(HttpSessionBindingEvent),只要 是實現(xiàn)HttpSessionAttributeListener接口的“監(jiān)聽器類”就可以回應該事件。當然了,你必須將這個“監(jiān)聽器類”定義在 web.xml文件內。 HttpSessionBindingListener 接口 HttpSessionBindingListener接口在觀念上與HttpSessionAttributeListener接口有點類似,但是它與 本章探討的“監(jiān)聽器類”并沒有直接關系。 (1)準備綁定至HTTP會話的對象必須實現(xiàn) HttpSessionBindingListener接口- - 監(jiān)聽器對象。 (2)在該對象內改寫HttpSessionBindingListener接口 所定義的兩種方法(參考下表)。
|
|
|