struts2攔截器介紹

來源:互聯網
上載者:User

從官網上摘了兩個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();}}}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.