天天看點

Listener監聽器

在servlet技術中已經定義了一些事件,并且我們可以針對這些事件來編寫相關的事件監聽器,進而對事件作出相應處理。servlet事件主要有3類:servlet上下文事件、會話事件與請求事件。下面具體講解這3類事件的監聽器實作。

1.對servlet上下文進行監聽(就是jsp中的application)

可以監聽servletcontext對象的建立和删除以及屬性的添加、删除和修改等操作。該監聽器需要使用到如下兩個接口類:

● servletcontextattributelistener:監聽對servletcontext屬性的操作,如增加、删除、修改操作。

● servletcontextlistener:監聽servletcontext。

當建立servletcontext時,激發contextinitialized (servletcontextevent sce)方法;

當銷毀servletcontext時,激發contextdestroyed(servletcontext- event sce)方法。

2.監聽http會話

可以監聽http會話活動情況、http會話中屬性設定情況,也可以監聽http會話的active、paasivate情況等。

該監聽器需要使用到如下多個接口類:

● httpsessionlistener:監聽httpsession的操作。

當建立一個session時,激發session created (sessionevent se)方法;

當銷毀一個session時,激發sessiondestroyed (httpsessionevent se) 方法。

● httpsessionactivationlistener:用于監聽http會話active、passivate情況。

● httpsessionattributelistener:監聽httpsession中屬性的操作。

當在session增加一個屬性時,激發attributeadded(httpsessionbindingevent se) 方法;

當在session删除一個屬性時,激發attributeremoved(httpsessionbindingevent se)方法;

在session屬性被重新設定時,激發attributereplaced(httpsessionbindingevent se) 方法。

3.對用戶端請求進行監聽

對用戶端的請求進行監聽是在servlet 2.4規範中新添加的一項技術,使用的接口類如下:

● servletrequestlistener接口類。

● servletrequestattrubutelistener接口類。

servlet上下文監聽器執行個體

下面編寫一個執行個體,使它能夠對servletcontext以及屬性進行監聽。由以上介紹可知,該類需要實作servletcontextattributelistener和servletcontextlistener接口類,其詳細代碼如下:

程式說明:該監聽器類實作了servletcontextattributelistener和servletcontextlistener兩個接口類中的5個方法:

● contextinitialized(servletcontextevent s)方法用來初始化servletcontext對象。

● contextdestroyed(servletcontextevent s)方法在上下文中删除某個屬性時調用。

● attributeadded(servletcontextattributeevent sa)方法在上下文中添加一個新的屬性時調用。

● attributereplaced(servletcontextattributeevent sa)方法在更新屬性時調用。

● attributeremoved(servletcontextattributeevent sa)方法在上下文中删除某個屬性時會被調用。

在使用這個監聽器之前還需要在web子產品中的web.xml配置檔案中進行聲明,代碼如下:

http會話監聽器執行個體

通過上一個監聽器執行個體,讀者應該對監聽器的實作過程有所了解,本小節将要介紹基于http會話的監聽器。首先建立監聽器類mysessionlistener.java,其源代碼如下:

程式說明:

(1)該程式實作了httpsessionlistener接口類中的兩個方法:

● sessioncreated(httpsessionevent arg0)方法進行http會話建立的監聽,如果http會話被建立将調用該方法。

● sessiondestroyed(httpsessionevent arg0)方法對http會話銷毀進行監聽,如果某個http會話被釋放将調用該方法。

(2)實作httpsessionactivationlistener接口類中的如下兩個方法:

● sessiondidactivate(httpsessionevent arg0)方法對http會話處于active情況進行監聽。

● sessionwillpassivate(httpsessionevent arg0)方法對http會話處于passivate情況進行監聽。

(3)實作httpsessionattributelistener接口類中的如下3種方法:

● attributeadded(httpsessionbindingevent arg0)方法對http會話中屬性添加進行監聽。

● attributereplaced(httpsessionbindingevent arg0)方法對http會話中屬性修改進行監聽。

● attributeremoved(httpsessionbindingevent arg0)方法對http會話中屬性删除進行監聽。

上一篇: 擴充卡模式
下一篇: Filter過濾器