回覆列表
  • 1 # 智者老陳

    區別如下:

    1 、攔截器是基於java的反射機制的,而過濾器是基於函式回撥。

    2 、攔截器不依賴與servlet容器,過濾器依賴與servlet容器。

    3 、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。

    4 、攔截器可以訪問action上下文、值棧裡的物件,而過濾器不能訪問。

    5 、在action的生命週期中,攔截器可以多次被呼叫,而過濾器只能在容器初始化時被呼叫一次。

    使用如下:

    在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈裡逐個處理,直到請求傳送到目標為止。例如,某網站裡有提交“修改的註冊資訊”的網頁,當用戶填寫完修改資訊並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的資料進行統一編碼。

    這兩項工作可以在由兩個過濾器組成的過濾鏈裡進行處理。當過濾器處理成功後,把提交的資料傳送到最終目標;如果過濾器處理不成功,將把檢視派發到指定的錯誤頁面。

    擴充套件資料:

    攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的一種實現策略。

  • 中秋節和大豐收的關聯?
  • 變能組什麼詞語?