從官網上摘了兩個struts2攔截器的配置方法,自己就記錄下來了:
第一種方式:配置單個攔截器
<package name="default" namespace="/system/login" extends="struts-default"> <interceptors> <interceptor name="timer" class="com.zyujie.common.TimerInterceptor"/> <interceptor name="logger" class="com.zyujie.common.LoggerInterceptor"/> </interceptors> <action name="login" class="userLogin" method="login"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <result name="input">login.jsp</result> <result name="success" type="redirectAction">/secure/home</result> </action></package>
第二種方式:通過攔截棧來配置攔截器
<package name="default" namespace="/system/login" extends="struts-default"> <interceptors> <interceptor name="timer" class="com.zyujie.common.TimerInterceptor"/> <interceptor name="logger" class="com.zyujie.common.LoggerInterceptor"/> <interceptor-stack name="myStack"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> </interceptor-stack> </interceptors> <action name="login" class="userLogin" method="login"> <interceptor-ref name="myStack"/> <result name="input">login.jsp</result> <result name="success" type="redirectAction">/secure/home</result> </action></package>
第三種方式:是引用struts2預設為我們實現的攔截器
<package name="upload" namespace="/system/upload" extends="struts-default"> <action name="fileUploadOther" class="myFileUploadAction" method="fileUploadOther"> <!-- 動態設定savePath的屬性值,設定為伺服器上的路徑 --> <param name="savePath">D:\webapp\apache-tomcat-6.0.10\webapps\struts2upload\upfiles</param> <param name="fileOpFileName">abcde.xls</param> <result name="success" type="redirect">/ok.jsp</result> <result name="input" type="redirect">/index.jsp</result> <!-- 實現struts的預設攔截器功能,所以要在後面加一個defaultStack,預設攔截棧 --> <interceptor-ref name="fileUpload"> <!-- 檔案過濾 --> <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg</param> <!-- 檔案大小, 以位元組為單位 --> <param name="maximumSize">2097152</param> </interceptor-ref> <!-- 預設攔截器必須放在fileUpload之後,否則無效 --> <interceptor-ref name="defaultStack" /> </action> </package>
下面是自己寫的兩個攔截類:
public class LoggerInterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invocation) throws Exception {Map map = invocation.getInvocationContext().getSession();if(map.get("userId") == null){/**使用者沒有登入**/System.out.println("沒有session,重新登入。");}else{System.out.println("已有session,不用再次登入。");}return invocation.invoke();}}
public class TimerInterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invocation) throws Exception {Map map = invocation.getInvocationContext().getSession();if(map.get("userId") == null){/**使用者沒有登入**/return Action.INPUT;}else{return invocation.invoke();}}}