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

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

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

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

    1.interceptor的配置

    方法1. 普通配置法

    <struts>
        <package name="struts2" extends="struts-default">
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
            </interceptors>

            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                
                <!-- 在自定義interceptor并將其ref時, 系統會覆蓋掉默認的interceptor-stack(defaultStack), 為了保證系統默認的defaultStack不受印象, 我們需要顯式的將其引入 -->
                <!-- 注意兩個interceptor-ref的順序, 順序不同, 執行效果也不同: 先配置的先執行/后配置的先退出(先進后出) --> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
                <interceptor-ref name="myInterceptor"></interceptor-ref>
            </action>
        </package>
    </struts>
    方法2. 配置攔截器棧(即將多個interceptor串聯的一種元素)。然后在<action>中引入該攔截器棧就可以了。

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
            
                <interceptor-stack name="myInterceptorStack">
                    <interceptor-ref name="myInterceptor"></interceptor-ref> 
                    <interceptor-ref name="defaultStack"></interceptor-ref> 
                </interceptor-stack>
            </interceptors>
            
            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result> 
                 
                <interceptor-ref name="myInterceptorStack"></interceptor-ref> 
            </action>
        </package>
    </struts>
    方法3. 修改默認攔截器,將自定義的攔截器棧定義為struts2的默認攔截器。

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
                <interceptor-stack name="myInterceptorStack">
                    <interceptor-ref name="myInterceptor"></interceptor-ref> 
                    <interceptor-ref name="defaultStack"></interceptor-ref> 
                </interceptor-stack>
            </interceptors>

            <!-- 此默認interceptor是針對所有action的 -->
            <!-- 如果某個action中引入了interceptor, 則在這個action中此默認interceptor就會失效 -->
            <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
            
            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
            </action>
            
        </package>
    </struts>
    2. Interceptor的角色對象

    (1)攔截目標對象(被代理對象),這里目標對象就是action;

    (2)攔截器(一個類,動態的將某些方法插入到目標對象的某方法的before、after);

    (3)對目標對象生成的(動態)代理對象(代理對象內部方法綜合了目標對象方法+攔截器方法)。程序最終執行的是目標對象的代理,而這個代理已經插入了interceptor。

    攔截器作用:攔截action。interceptor相當于一個入口和出口,通過interceptor進入action,執行完action的代碼再通過interceptor出去。

    針對"struts2 -- interceptor(Interceptor怎么寫)"這篇文章的MyInterceptor.class和MyInterceptor2.class。根據下面的配置文件執行程序

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
                <interceptor name="myInterceptor2" class="edu.hust.interceptor.MyInterceptor2"></interceptor>
                <interceptor-stack name="myInterceptorStack">
                    <interceptor-ref name="myInterceptor"></interceptor-ref>
                    <interceptor-ref name="myInterceptor2"></interceptor-ref>
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            
            <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
            
            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
            </action>
            
        </package>
    </struts>

    Console會得到以下打印輸出
    intercept start
    intercept2 start
    2008-9-19 19:42:06 com.opensymphony.xwork2.validator.ActionValidatorManagerFactory <clinit>
    信息: Detected AnnotationActionValidatorManager, initializing it...
    intercept2 finish
    intercept finish

    這個結果解釋了"interceptor相當于一個入口和出口,通過interceptor進入action,執行完action的代碼再通過interceptor出去"這句話。

    3. extends MethodFilterInterceptor的攔截器如何配置哪些方法該攔截、哪些方法不該攔截(針對方法攔截的配置)

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor3" class="edu.hust.interceptor.MyInterceptor3"></interceptor>
            </interceptors>
            
            <action name="register" class="edu.hust.action.RegisterAction" method="queryAll">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                <!-- myInterceptor3攔截器只對RegisterAction中的queryAll()方法和insert()方法進行了攔截, 其他方法未進行攔截 -->
                <interceptor-ref name="myInterceptor3">
                    <param name="includeMethods">queryAll, execute</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
            <action name="register" class="edu.hust.action.RegisterAction" method="insert">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                <interceptor-ref name="myInterceptor3">
                    <param name="includeMethods">queryAll, insert</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
            <action name="register" class="edu.hust.action.RegisterAction" method="update">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                <interceptor-ref name="myInterceptor3">
                    <param name="includeMethods">queryAll, insert</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
        </package>
    </struts>


    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ForWayfarer/archive/2008/09/20/2955586.aspx

    posted on 2009-08-20 11:03 brock 閱讀(7516) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产福利电影一区二区三区,免费久久久久久久精 | 天天干在线免费视频| 亚洲免费在线视频| 天黑黑影院在线观看视频高清免费| 免费国产综合视频在线看| 亚洲av纯肉无码精品动漫| 日本xxwwxxww在线视频免费 | 免费视频淫片aa毛片| 亚洲中文字幕一二三四区| 成人人免费夜夜视频观看| 亚洲人成色在线观看| 四虎永久在线精品免费观看地址| 在线亚洲精品视频| 中文字幕亚洲电影| 久久久久久久久久国产精品免费 | 亚洲欧洲免费视频| 亚洲经典在线中文字幕| 成年免费大片黄在线观看岛国| 亚洲va成无码人在线观看| 最近中文字幕mv免费高清电影| 亚洲精品永久在线观看| 全黄性性激高免费视频| 中文字幕成人免费高清在线| 亚洲国产成人精品不卡青青草原| 人妻丰满熟妇无码区免费| 亚洲av日韩av综合| www.亚洲色图| 久久99毛片免费观看不卡| 91亚洲国产成人久久精品| 黄a大片av永久免费| 久久九九久精品国产免费直播| 亚洲丁香色婷婷综合欲色啪| 国产免费AV片在线播放唯爱网| 国产精品亚洲色婷婷99久久精品| 亚洲一区二区三区自拍公司| 精品成在人线AV无码免费看 | 本道天堂成在人线av无码免费| 亚洲av福利无码无一区二区| a级毛片无码免费真人| 香蕉免费看一区二区三区| 亚洲乱码一二三四区国产|