<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()業務邏輯方法。有時我們需要在執行execute()方法之前先進行比如登陸驗證之類的判斷。只有登陸過的用戶才能進行業務操作。這時就需要用到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>

    當執行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
      {
       //有信息繼續執行execute()方法
       return invocation.invoke();
      }
     }

    }

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

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


    2.方法過濾攔截器

    默認情況下我們為某個Action定義了攔截器,則這個攔截器會攔截該Action的所有方法。有些情況下,我們無需攔截所有的方法,此時就需要使用方法過濾攔截器。

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

    方法過濾攔截器類繼承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


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


    網站導航:
     
    主站蜘蛛池模板: 暖暖在线视频免费视频| 国产精品福利片免费看| 中国xxxxx高清免费看视频| 亚洲狠狠婷婷综合久久久久| 一区二区三区AV高清免费波多| 免费在线视频一区| 成人在线免费视频| 国产AV无码专区亚洲AWWW| 亚欧国产一级在线免费| 亚洲精品中文字幕乱码三区| 久久精品电影免费动漫| 激情内射亚洲一区二区三区| 亚洲精品视频在线观看免费| 亚洲成aⅴ人片在线影院八| 国产在线观看麻豆91精品免费 | 久久美女网站免费| 亚洲一区二区中文| 99久久99这里只有免费费精品| 亚洲精品伊人久久久久| 免费无码一区二区三区蜜桃大| 色婷婷六月亚洲综合香蕉| 亚洲天天做日日做天天欢毛片| 免费国产叼嘿视频大全网站| 77777_亚洲午夜久久多人 | 国产h视频在线观看免费| 中文字幕亚洲码在线| 国产免费久久精品久久久| yellow视频免费看| 亚洲国产高清视频| 亚洲免费网站观看视频| 免费VA在线观看无码| 亚洲欧洲第一a在线观看| 成年人免费网站在线观看| 免费中文字幕视频| 久久精品国产亚洲精品2020| 免费的一级黄色片| 成人性生交大片免费看好| 久久亚洲国产最新网站| 亚洲欧洲成人精品香蕉网| www.999精品视频观看免费| xxxxx做受大片在线观看免费|