void init(); void destroy(); String intercept(ActionInvocation invocation) throws Exception;
public abstract class AbstractInterceptor implements Interceptor; public abstract class MethodFilterInterceptor extends AbstractInterceptor;
package interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class MyInterceptor implements Interceptor { public void destroy() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } public String intercept(ActionInvocation invocation) throws Exception { System.out.println("Action執行前插入 代碼"); //執行目標方法 (調用下一個攔截器, 或執行Action) final String res = invocation.invoke(); System.out.println("Action執行後插入 代碼"); return res; } }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <package name="default" extends="struts-default"> <interceptors> <interceptor name="MyInterceptor" class="interceptor.MyInterceptor"></interceptor> <interceptor-stack name="myInterceptorStack"> <interceptor-ref name="MyInterceptor"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <action name="loginAction" class="loginAction"> <result name="fail">/index.jsp </result> <result name="success">/success.jsp</result> <interceptor-ref name="myInterceptorStack"></interceptor-ref> </action> </package> </struts>
攔截器
名字
說明
Alias Interceptor
alias
在不同請求之間將請求參數在不同名字件轉換,請求內容不變
Chaining Interceptor
chain
讓前一個Action的屬性可以被後一個Action訪問,現在和chain類型的result()結合使用。
Checkbox Interceptor
checkbox
添加了checkbox自動處理代碼,將沒有選中的checkbox的內容設定為false,而html默認情況下不提交沒有選中的checkbox。
Cookies Interceptor
cookies
使用配置的name,value來是指cookies
Conversion Error Interceptor
conversionError
將錯誤從ActionContext中添加到Action的屬性字段中。
Create Session Interceptor
createSession
自動的創建HttpSession,用來為需要使用到HttpSession的攔截器服務。
Debugging Interceptor
debugging
提供不同的調試用的頁面來展現內部的數據狀況。
Execute and Wait Interceptor
execAndWait
在後台執行Action,同時將用戶帶到一個中間的等待頁面。
Exception Interceptor
exception
將異常定位到一個畫面
File Upload Interceptor
fileUpload
提供文件上傳功能
I18n Interceptor
i18n
記錄用戶選擇的locale
Logger Interceptor
logger
輸出Action的名字
Message Store Interceptor
store
存儲或者訪問實現ValidationAware接口的Action類出現的消息,錯誤,字段錯誤等。
Model Driven Interceptor
model-driven
如果一個類實現了ModelDriven,將getModel得到的結果放在Value Stack中。
Scoped Model Driven
scoped-model-driven
如果一個Action實現了ScopedModelDriven,則這個攔截器會從相應的Scope中取出model調用Action的setModel方法將其放入Action內部。
Parameters Interceptor
params
將請求中的參數設置到Action中去。
Prepare Interceptor
prepare
如果Acton實現了Preparable,則該攔截器調用Action類的prepare方法。
Scope Interceptor
scope
將Action狀態存入session和application的簡單方法。
Servlet Config Interceptor
servletConfig
提供訪問HttpServletRequest和HttpServletResponse的方法,以Map的方式訪問。
Static Parameters Interceptor
staticParams
從struts.xml文件中將中的中的內容設置到對應的Action中。
Roles Interceptor
roles
確定用戶是否具有JAAS指定的Role,否則不予執行。
Timer Interceptor
timer
輸出Action執行的時間
Token Interceptor
token
通過Token來避免雙擊
Token Session Interceptor
tokenSession
和Token Interceptor一樣,不過雙擊的時候把請求的數據存儲在Session中
Validation Interceptor
validation
使用action-validation.xml文件中定義的內容校驗提交的數據。
Workflow Interceptor
workflow
調用Action的validate方法,一旦有錯誤返回,重新定位到INPUT畫面
Parameter Filter Interceptor
N/A
從參數列表中刪除不必要的參數
Profiling Interceptor
profiling
通過參數激活profile