struts2的Interceptor配置說明(一)

Struts 2 的Interceptor配置

interceptors是一個攔截器,指可以定義一段代碼可以在另一個方法執行之前或者之後被執行。(Filter 式樣)。

當開發應用時interceptors可以成爲一個強有力的工具。

有很多種情況下可以用到interceptors,包括驗證,屬性封裝,安全機制,日誌,性能分析
驗證 對輸入做正確性測驗
屬性封裝 將輸入參數傳輸和轉換成類的屬性
日誌 記錄關於每個action的信息
性能分析 統計action的吞吐量,尋找性能瓶頸

多個interceptor能夠鏈接在一起來形成一個棧。如果一個action需要去check客戶端的證書,對action進行記錄,

對action計時,記錄整個執行時間等等,

可以用一個相同的interceptor棧來完成。

interceptor使用java類實現的,所以每一個攔截器有一個對應的類名。爲了使引用一個攔截器變得容易,每一個類可以在框架裏面註冊,

分配一個唯一的,簡單的名字

註冊攔截器
<interceptors>
  <interceptor name="security" class="com.company.security.SecurityInterceptor"/>
  <interceptor-stack name="secureStack">
    <interceptor-ref name="security"/>
    <interceptor-ref name="defaultStack"/>
  </interceptor-stack>
</interceptors>
說明1:當定義一個攔截器棧的時候,個別攔截器和攔截器棧可以在任何順序下混合配對。
說明2:在框架中會按照在攔截器棧裏面定義攔截器的順序進行逐一調用

補充說明: 補充一下此defaultStack在struts的默認配置文件中最下面有,以及默認的對應攔截器類,此攔截器類(ActionSupport)

正好是定義各種action的父類

大部分應用會定義一個缺省的攔截器棧,如下:
<default-interceptor-ref name="secureStack"/>
但是任何一個action也可以定義他自己的本地棧
本地攔截器棧
<actionname="VelocityCounter" class="org.apache.struts2.example.counter.SimpleCounter">
    <resultname="success">...</result>
    <interceptor-refname="defaultComponentStack"/>
</action>
默認的配置文件(struts-default.xml)建立了一個默認的攔截器棧,這個攔截器棧對於大部分應用都是有用的。
翻譯自http://struts.apache.org/docs/interceptor-configuration.html
更爲詳細說明http://struts.apache.org/docs/interceptors.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章