struts2的攔截器

攔截器 的使用 ,源自Spring AOP(面向切面編程)思想 
攔截器 採用 責任鏈 模式 
*  在責任鏈模式裏,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。
    *  責任鏈每一個節點,都可以繼續調用下一個節點,也可以阻止流程繼續執行 

在struts2 中可以定義很多個攔截器,將多個攔截器按照特定順序 組成攔截器棧 (順序調用 棧中的每一個攔截器 )




1、 struts2 所有攔截器 都必須實現 Interceptor 接口 
2、 AbstractInterceptor 類實現了 Interceptor 接口. 併爲 init, destroy 提供了一個空白的實現


所有實際開發中,自定義攔截器 只需要 繼承 AbstractInterceptor類, 提供 intercept 方法實現 


3、 常用struts2 攔截器
<interceptor-ref name="modelDriven"/> 模型驅動
<interceptor-ref name="fileUpload"/> 文件上傳
<interceptor-ref name="params"> 參數解析封裝 
<interceptor-ref name="conversionError"/> 類型轉換錯誤
<interceptor-ref name="validation"> 請求參數校驗
<interceptor-ref name="workflow"> 攔截跳轉 input 視圖



自定義攔截器:

1.創建一個類,實現Interceptor接口或繼承 AbstractInterceptor
注意:要想讓攔截器繼續向下執行需要通過 ActionInvocation調用它的invoke方法.

2.在struts.xml文件中針對特定的action進行配置.

在<package>下可以通過
<interceptors>來對自己的攔截器進行配置
例如:
<interceptors>
<interceptor name="privilege" class="cn.itcast.utils.PrivilegeInterceptor"></interceptor>
</interceptors>

可以在action中通過
<interceptor-ref name="privilege"/>
來引用你配置的攔截器.

注意:如果在一個action中顯示的配置了一個攔截器,那麼我們所使用的默認的攔截器棧default-Stack就會失效。




<interceptor-stack>它用於配置一個攔截器棧。




注意事項總結:
1.讓攔截器可以向下執行  ActionInvocation.invoke();
2.攔截器配置注意事項:如果顯示的配置了一個攔截器,那麼默認使用的defaultStack失效,需要手動在配置一下。
3.如果要針對action中某個方法攔截可以使用MethodFilterInterceptro來操作

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