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 |
struts2的Interceptor配置說明(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.