結果現在又跑出一個 Interceptor ( 攔截器 )
此功能可用於資料的判斷,比如:
1 . 此使用者是否已經登入
2 . 此使用者是否靜置不動一段時間
...等
這些都是很實用的功能
要講述此功能前要先講一個情境
以便於日後更快了解要如何實際應用
現在有兩個頁面
A : 歡迎頁面
B : 會員資料頁面( 需通過攔阻器的驗證才可進入 )
想必大家都知道攔阻器的功能吧
我們來把 A 和 B 串成一個流程
這就是大家最熟悉的登入會員流程了
以下開始講程式面的說明
通常都是把攔阻器寫在 struts.xml 檔案內
攔阻器的設置如下
這部分只是類似宣告
還未開始被使用
<!-- 攔截器 -->
<interceptors>
<!-- (單一)宣告自定義攔截器 -->
<interceptor name="MyInterceptor" class="com.brian.example.interceptor.MyInterceptor"></interceptor>
<!-- (組合)定義其他攔截器,可引用其他攔截器 -->
<interceptor-stack name="defaultInterceptorStack">
<interceptor-ref name="MyInterceptor"></interceptor-ref>
<interceptor-ref name="i18n"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
<!-- (組合)定義其他攔截器,可引用其他攔截器 -->
<interceptor-stack name="defaultInterceptorStack111">
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
以上攔截器設置完後
要如何使用??
1 ) 全域使用:所有的 Action 都先被攔截
皆可替換您在上方設置的任一個攔截器
<interceptors>
.
.
.
</interceptors>
<!-- 以下功能是針對 "全部" action ,所以只要經過 struts.xml 就一定會先經過他-->
<!-- 如果有部分頁面或功能不需要到,就不要使用此功能 -->
<default-interceptor-ref name="MyInterceptor"></default-interceptor-ref>
2 ) 部分使用:針對部分設置的 Action 才被先攔截
皆可替換您在上方設置的任一個攔截器
<interceptors>
.
.
.
</interceptors>
<!-- 只針對此 Action 先前攔截 -->
<action name="data" class="com.brian.example.action.DataAction"
method="execute">
<interceptor-ref name="MyInterceptor"/>
<result name="success">/WEB-INF/jsp/data.jsp</result>
</action>
最後,如果要做自己專屬的攔阻器
必須要實作 Interceptor
包括以下 :
1 . init:生成時。
2 . destroy:銷毀時。
3 . intercept:監聽,如果有攔截到特定資料,要如何處理。
參考資料:菜鸟学SSH(四)——Struts2拦截器
參考資料:从struts2拦截器到自定义拦截器
參考資料:struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
參考資料:Struts拦截器及Struts.xml文件详解
歡迎轉載,請註明出處。
沒有留言:
張貼留言