1. 程式人生 > >Servlet監聽器技術

Servlet監聽器技術

監聽事件 mov ron one rep 我們 介紹 session 編寫

監聽器的作用:

增加WEB的事件處理機制,更好的監視和控制web應用狀態的變化

每當web應用中某些某些狀態發生變化時,Servlet容器將產生相應的事件,此時我們實現的監聽器會接收和處理這些事件.

Servlet2.4規範中定義了8個監聽器接口和6個事件

監聽器和監聽事件的對應關系:

1.ServletContextListener --- ServletContextEvent//應用程序加載並初始化或應用程序卸載關閉

2.ServletContextAttributeListener --- ServletContextAttributeEvent //application應用範圍內有對象add(加入)或 replace(取代) 或remove(移除)

3.HttpSessionListener || HttpSessionActivationListener --- HttpSessionEvent //Http會話的創建和銷毀||會話的有效(active)和無效(passivate)狀態

4.HttpsessionAttributeListener || HttpSessionBindingListener --- HttpSessionBindingEvent //會話屬性的設置[session會話範圍內有對象add(加入)或 replace(取代) 或remove(移除)] || 監聽會話中對象的綁定信息,對象加入或移除(唯一無需在web.xml中設定listener)


5.ServletRequestListener --- ServletRequestEvent //請求對象加載並初始化或銷毀時

6.ServletRequestAttributeListener --- ServletRequestAttributeEvent //request請求範圍內有對象add(加入)或 replace(取代) 或remove(移除)(例如校內網,通過請求事件監聽拒絕遠程訪問,通過從request中獲取的ip地址判斷是否準許訪問)

按監聽的事件可把監聽器分為兩種:

1)監聽域對象自身的創建和銷毀的事件監聽器

2)監聽對象中屬性(attribute)的增加和刪除的事件監聽器

簡單介紹其中三個監聽器接口()

一.ServletContextListener 監聽應用程序環境對象

接口中有兩個方法:

public void contextInitializes(ServletContextEvent sce)//當應用程序部署時,web容器會創建一個ServletContextEvent事件對象,同時調用該方法,我們在實現類方法體中編寫的事件處理代碼即被執行.

public void contextDestroyed(ServletContextEvent sce)//在應用程序被卸載時會激發此方法

二.HttpSessionListener 監聽用戶會話對象(監聽綁定到HttpSession域中的某個對象的狀態)

接口中的兩個方法接收一個HttpSessionEvent類型的事件對象參數

public void sessionCreated(HttpSessionEvent se)//在容器創建一個新的Session對象時激發

public void sessionDestroyed(HttpSessionEvent se)//在容器銷毀一個Session對象時激發,可以通過參數獲得當前被銷毀的ServletRequest對象

三.ServletRequestListener 監聽請求消息對象

其兩個方法接收一個ServletRequestEvent類型事件對象參數

public void requestInitilized(ServletRequestEvent sre)//容器新建一個Request請求對象時激發

public void requestDestroyed(ServletRequestEvent sre)//可以通過參數獲得當前被銷毀的ServletRequest對象

編寫特定功能的監聽器只需要實現上述接口即可(可以實現其中之一,也可以全部實現,實現相應的方法完成你的目的;視開發實際情況而定)

例如:

package com.mycompany;

import javax.servlet.*;
import javax.servlet.http.*;

public class MyListener implements ServletContextListener,HttpSessionListener,ServletRequestListener{

......

}

如web容器是tomcat可在web.xml中註冊該監聽器(可以註冊一個或多個實現某一接口的事件監聽器)

<listener>
    <listener-class>com.mycompany.MyListener</listener-class>
</listener>

Servlet監聽器技術