1. 程式人生 > >java中攔截器、過濾器與監聽器的區別

java中攔截器、過濾器與監聽器的區別

一、攔截器

        interceptor:java裡的攔截器是動態攔截Action呼叫的物件。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的程式碼,也可以在一個action執行前阻止其執行,同時也提供了一種可以提取action中可重用部分的方式。在AOP(Aspect-Oriented Programming)中攔截器用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。

二、過濾器

        filter:Filter也稱之為過濾器,它是Servlet技術中最激動人心的技術,WEB開發人員通過Filter技術,對web伺服器管理的所有web資源:例如Jsp, Servlet, 靜態圖片檔案或靜態 html 檔案等進行攔截,從而實現一些特殊的功能。例如實現URL級別的許可權訪問控制、過濾敏感詞彙、壓縮響應資訊等一些高階功能。

三、監聽器

       listener: 這個東西在c/s模式裡面經常用到,他會對特定的事件產生產生一個處理。監聽在很多模式下用到。比如說觀察者模式,就是一個監聽來的。又比如struts2可以用監聽來啟動。Servlet監聽器用於監聽一些重要事件的發生,監聽器物件可以在事情發生前、發生後可以做一些必要的處理。

四、攔截器與過濾器的區別

       1.攔截器是基於java的反射機制的,而過濾器是基於函式回撥。   2.攔截器不依賴與servlet容器,過濾器依賴與servlet容器。   3.攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。   4.攔截器可以訪問action上下文、值棧裡的物件,而過濾器不能訪問。   5.在action的生命週期中,攔截器可以多次被呼叫,而過濾器只能在容器初始化時被呼叫一次