1. 程式人生 > >Struts2的過濾器和攔截器

Struts2的過濾器和攔截器

過濾器FilterDispacher

在req傳入前提前過濾掉一些資訊,或者設定一些引數,然後再傳入Action進行業務邏輯,如過濾非法的URL(使用者登入控制),統一設定字符集,去掉一些非法字元

攔截器Interceptor

Action方法前、後或者丟擲異常時,呼叫一個方法完成業務邏輯的操作,如國際化、輸出驗證、檔案上傳

兩者區別

  • 過濾器基於函式回撥,攔截器基於反射機制
  • 過濾器倚賴Servlet容器,攔截器不依賴
  • 過濾器對所有的請求起作用,攔截器只是對Action起作用,但是攔截器可以訪問Action的上下文、值棧裡面的物件,過濾器不能訪問。
  • 在Action生命週期,過濾器只能在容器中初始化一次,攔截器可以多次呼叫。

執行過程

過濾-攔截-Action處理-攔截-過濾
首先把客戶端提交的內容進行過濾,未登入使用者不能訪問內部頁面的處理,過濾通過後,攔截器將檢查使用者提交資料的驗證,做一些前期的資料處理,接著把處理後的資料發給對應的Action。Action處理完成返回後,攔截器還可以做其他過程,再向上返回到過濾器的後續操作。