<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    §封Ja葬va§

    Struts2核心攔截器

    當struts2經過輸入校驗階段(struts2系列---輸入校驗)后,接著將調用execute()業(yè)務邏輯方法。有時我們需要在執(zhí)行execute()方法之前先進行比如登陸驗證之類的判斷。只有登陸過的用戶才能進行業(yè)務操作。這時就需要用到Struts2的攔截器Interceptor。

    以下為struts2攔截器用法的簡單小結:

    1.

    struts.xml配置:

    <?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>

        <package name="default" extends="struts-default">

            <interceptors>
           
                <!--定義攔截器-->
                <interceptor name="isLogin" class="com.test.action.interceptor.IsLoginInterceptor"></interceptor>
               
                <!--
                <!-- 自定義攔截器棧-->
                <interceptor-stack name="myStack">
                    <interceptor name="isLogin"/>
                    <interceptor name="defaultStack"/>
                </interceptor-stack>
                -->
               
            </interceptors>
           
            <!--
            <default-interceptor-ref name="myStack"></default-interceptor-ref>
            -->

            <!--定義全局跳轉頁-->
            <global-results>
                <result name="login" type="redirect">/login.jsp</result>
            </global-results>

            <action name="updateMessage" class="com.test.action.UserAction">
                <result name="success">/success.jsp</result>
                <result name="input">/index.jsp</result>
                <result name="failure">/index.jsp</result>
                <!--放入上面自定義的攔截器-->
                <interceptor-ref name="isLogin"/>
                <!--放入struts2默認的攔截器棧-->           
                <interceptor-ref name="defaultStack"/>
            </action>

        </package>

    </struts>

    當執(zhí)行execute()方法之前被自定義的isLogin攔截器攔截下來進入到IsLoginInterceptor類來進行登陸驗證。

    IsLoginInterceptor.java:

    public class IsLoginInterceptor extends AbstractInterceptor {

     @Override
     @SuppressWarnings("unchecked")
     public String intercept(ActionInvocation invocation) throws Exception
     {
      //獲得Session對象
      Map session = invocation.getInvocationContext().getSession();
      //判斷session中是否有信息
      if(session.get("userid") == null)
      {
       //無信息返回配置文件中<global-results>配置的全局頁面
       return Action.LOGIN;
      }
      else
      {
       //有信息繼續(xù)執(zhí)行execute()方法
       return invocation.invoke();
      }
     }

    }

    注:defaultStack是每個<action/>默認的攔截器棧。然而當用戶在<action>中放入了自定義的攔截器的時候,就必須再顯式的放入defaultStack。
    struts2之所以能在Action類里能做那么多功能,就是依賴于其默認的攔截器棧里定義的各種攔截器。
    用戶可以配置自己的攔截器棧作為默認的攔截器棧:
    只需將配置中的注釋解開,<action/>配置里的<interceptor/>也就無需寫了。此時自定義的myStack代替了defaultStack攔截器棧

    實際開發(fā)中,往往配置多個攔截器棧,配置于不同業(yè)務模塊的<action/>中。
    但是注意默認的攔截器棧只能是一個。


    2.方法過濾攔截器

    默認情況下我們?yōu)槟硞€Action定義了攔截器,則這個攔截器會攔截該Action的所有方法。有些情況下,我們無需攔截所有的方法,此時就需要使用方法過濾攔截器。

    方法過濾攔截器使用方法與普通的攔截器沒什么區(qū)別:

    方法過濾攔截器類繼承MethodFilterInterceptor,
    重寫的是doIntercept(ActionInvocation invacation)方法

    <action/>配置中:

    <!--放入上面自定義的攔截器-->
    <interceptor-ref name="isLogin">
        <!-- 指定login和register方法不需要被攔截-->
        <param name="excludeMethods">login,register</param>
        <!-- 指定execute方法需要被攔截-->
        <param name="includeMethods">execute</param>
    </interceptor>

    posted on 2009-03-05 10:35 §朱家二少§ 閱讀(429) 評論(0)  編輯  收藏 所屬分類: Struts2


    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 永久免费毛片在线播放| 成年女人毛片免费观看97| 免费吃奶摸下激烈视频| 伊人久久亚洲综合影院首页| 嫖丰满老熟妇AAAA片免费看| 亚洲精品福利在线观看| 亚洲最大免费视频网| 国产亚洲精品成人AA片| 四虎在线视频免费观看| www亚洲精品久久久乳| 亚洲高清无码专区视频| a高清免费毛片久久| 亚洲精品无码AV人在线播放| 免费91麻豆精品国产自产在线观看| 亚洲产国偷V产偷V自拍色戒 | 亚洲天堂在线播放| 未满十八18禁止免费无码网站| 亚洲日本精品一区二区| 亚洲一区二区三区免费观看| 亚洲日韩久久综合中文字幕| 四虎影院永久免费观看| 中文字幕免费在线播放| 亚洲国产精品lv| 免费看a级黄色片| 一级做a爰片久久毛片免费陪 | 一级a性色生活片久久无少妇一级婬片免费放 | 免费大片黄手机在线观看| 最近更新免费中文字幕大全| 久久亚洲国产成人精品性色| 一二三四免费观看在线视频中文版 | 免费a级毛片永久免费| 97超高清在线观看免费视频| 亚洲精品视频免费看| 免费看片A级毛片免费看| yellow视频免费在线观看| 亚洲免费在线播放| 免费看大黄高清网站视频在线| 国产免费福利体检区久久| 亚洲精品在线电影| 国产91久久久久久久免费| 久久久国产精品无码免费专区|