<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ā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精华液网站w| 亚洲AV成人一区二区三区在线看| 国产精品免费观看调教网| 91亚洲国产成人精品下载| 国产精品免费观看久久| 免费H网站在线观看的| 亚洲一区精彩视频| 亚洲精品偷拍视频免费观看 | 亚洲乱码一区二区三区在线观看 | 国产高清不卡免费视频| jlzzjlzz亚洲jzjzjz| 亚洲免费无码在线| 18成禁人视频免费网站| 黄床大片30分钟免费看| 亚洲黄网在线观看| 亚洲av日韩片在线观看| 久久乐国产综合亚洲精品| 在线精品亚洲一区二区小说| 91网站免费观看| 亚洲国产超清无码专区| www视频在线观看免费| 男人扒开添女人下部免费视频| 亚洲欧洲国产日韩精品| 免费萌白酱国产一区二区| 88av免费观看| 一区二区三区免费在线视频| 亚洲一区无码中文字幕乱码| 91麻豆精品国产自产在线观看亚洲 | 特级毛片爽www免费版| 亚洲一卡2卡4卡5卡6卡在线99 | 青青在线久青草免费观看| 一个人看的在线免费视频| 亚洲 欧洲 自拍 另类 校园| 亚洲成在人天堂一区二区| 亚洲AV无码乱码在线观看性色扶| 国产精品永久免费视频| 亚洲一久久久久久久久| 情侣视频精品免费的国产| 中文字幕免费在线观看| A级毛片成人网站免费看| 小说区亚洲自拍另类|