1. 程式人生 > >Filter(過濾器)、Listener(監聽器)【Servlet總結】

Filter(過濾器)、Listener(監聽器)【Servlet總結】

Filter

Filter攔截請求和響應,以便檢視、提取或以某種方式操作正在客戶機和伺服器之間交換的資料,可以改變一個請求(request)或者修改響應(respond)。使用者傳送請求給Servlet時,在Servlet處理請求之前,與此Servlet相關的Filter首先執行,然後才是Servlet來執行。如果一個Servlet有多個Filter,則根據配置的先後次序一次執行。Filter主要用於:

(1)訪問特定資源(Web網頁、JSP頁、Servlet)時的身份驗證

(2)訪問資源的記錄跟蹤

(3)訪問資源的轉換

一個Filter必須實現介面:javax.Servlet.Filter,即實現下面幾個方法:

(1)doFilter(ServletRequest,ServletResponse,FilterChain),用來實現過濾行為的方法。引入的FilterChain物件提供了後續Filter所要呼叫的資訊。

(2)init(FilterConfig),由容器所呼叫的Filter初始化方法。容器確保在第一次呼叫doFilter()方法前呼叫此方法,一般用來獲取在Web.xml檔案中指定的初始化引數。

(3)destroy(),容器在破壞Filter例項前,doFilter()方法中的所有活動都被該例項終止後,呼叫此方法。

Listener

Listener用來主動監聽Web容器事件(Web應用上下文建立銷燬、會話物件建立銷燬以及會話屬性資訊增刪改等)通過事件監聽,Listener物件可以在事件發生前、發生後進行一些必要的處理。Listener實現了Web應用的事件驅動,使得Web應用不僅可以被動的處理客戶端發出的請求,而且可以主動對Web容器的變化進行響應,大大提高了Web應用的能力。

                   Listener介面                           Event類
ServletContextListener ServletContextEvent
ServletContextAttributeListener ServletContextAttributeEvent
HttpSessionListener HttpSessionEvent
HttpSessionActivationListener
HttpSessionAttributeListener HttpSessionBindingEvent
HttpSessionBindingListener
ServletRequestListener ServletRequestEvent
ServletRequestAttributeListener ServletRequestAttributeEvent
javax.servlet.Asynclistener asyncEvent