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