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

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

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

    posts - 22, comments - 32, trackbacks - 0, articles - 73
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    struts2攔截器配置詳解

    Posted on 2009-10-12 22:41 為自己代言 閱讀(33103) 評論(6)  編輯  收藏
     

    Struts2 攔截器詳細(xì)配置過程

    1:所有攔截器的超級接口Interceptor ,Action去實(shí)現(xiàn)這個(gè)接口;

     Interceptor 它其中有三個(gè)方法(init(),destroy() ,interceptor()):

          Init()方法:在服務(wù)器起動(dòng)的時(shí)候加載一次,并且只加載一次;

          Destroy()方法:當(dāng)攔截器銷毀時(shí)執(zhí)行的方法;

          Interceptor()方法:其中里邊有一個(gè)參數(shù)invocation

    public String intercept(ActionInvocation invocation) throws xception {

           System.out.println("interceptor!!");

           String result=invocation.invoke();

           return result;

        }

    Invocation.invoke()是如果只有一個(gè)攔截器執(zhí)行完這個(gè)方法后,會(huì)返回給視圖,如果有多個(gè)攔截器,它順序的執(zhí)行完所有的攔截器,才返回給視圖.

    2:可以在系統(tǒng)初始化中給攔截器指定默認(rèn)的參數(shù)(也包括了定義攔截器方式)如下:

        在攔截器類中把hello當(dāng)做屬性set/get方式注入到攔截器類中;

          <interceptors>

               <!-- 先定義攔截器 -->

               <interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">

                  <!-- 指定系統(tǒng)初始化給攔截器的參數(shù) -->

                  <param name="hello">張釗釗</param>

               </interceptor>

               <!-- 加到自己設(shè)置的攔截器棧里邊去 -->

               <interceptor-stack name="myStack">

                  <interceptor-ref name="myInterceptor">

                  </interceptor-ref>

                  <interceptor-ref name="defaultStack"></interceptor-ref>

               </interceptor-stack>

           </interceptors>

           <!-- 改變系統(tǒng)默認(rèn)的攔截器,改成自己的默認(rèn)攔截器,并且一個(gè)系統(tǒng)只能有一個(gè)默認(rèn)的攔截器,這樣這個(gè)攔截器棧會(huì)默認(rèn)應(yīng)用到所有的Action上去 -->

           <default-interceptor-ref name="myStack">

           </default-interceptor-ref>

           也可以在使用攔截器的時(shí)候給它設(shè)置參數(shù):

           就是在一個(gè)action reslut下面配置上如下:

        <action name="register"

               class="com.zzz.struts2.action.RegisterAction">

               <result name="success">/success.jsp</result>

               <!-- result 它其中還有一個(gè)信息轉(zhuǎn)發(fā)類型 type=""記住,如果不轉(zhuǎn)向JSP,轉(zhuǎn)向圖表,可以改變type="" -->

               <result name="input">/register.jsp</result>

              

               <interceptor-ref name="myInterceptor">

                  <param name="hello">welcome</param>

               </interceptor-ref>

               <interceptor-ref name="myStack"></interceptor-ref>

           </action>

    2.攔截器,攔截器棧和默認(rèn)的攔截器之間的關(guān)系

    1:攔截器和攔截器棧是一個(gè)級別的,也就是說一個(gè)攔截器棧中包括許多攔截器, 一個(gè)攔截器棧中還可以包括許多攔截器棧,配置如下方式:

    <interceptors>

               <!-- 先定義攔截器 -->

               <interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">

                  <!-- 指定系統(tǒng)初始化給攔截器的參數(shù) -->

                  <param name="hello">張釗釗</param>

               </interceptor>

               <!-- 加到自己設(shè)置的攔截器棧里邊去 -->

               <interceptor-stack name="myStack">

                  <interceptor-ref name="myInterceptor">

                  </interceptor-ref>

                  <interceptor-ref name="defaultStack"></interceptor-ref>

               </interceptor-stack>

           </interceptors>

    攔截器的使用:1.先定義;2.在引用使用;

    <interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">

    <interceptor-ref name="myInterceptor">

                  </interceptor-ref>

     2:struts2中有一個(gè)系統(tǒng)默認(rèn)的攔截器棧是 defaultStack,如果你手動(dòng)引用自己的攔截器,系統(tǒng)默認(rèn)的攔截器棧將不起作用;這樣必需手動(dòng)引入系統(tǒng)的攔截器棧<interceptor-ref name="defaultStack">

                  </interceptor-ref>

    如果想改變系統(tǒng)默認(rèn)的攔截器棧,可以這樣配置:

    <default-interceptor-ref name="myStack">

    </default-interceptor-ref>其中myStack是自己定義的攔截器棧名字;

    如果攔截器棧中有多個(gè)攔截器,在執(zhí)行action之前的順序跟配置攔截器的順序一致,而在action之后執(zhí)行的順序是相反的;

     

    3:抽象的攔截器類AbstractInterceptor

    1:Interceptor這個(gè)超級攔截器接口,有三方法需要實(shí)現(xiàn),但是如果不想使用init();

        destroy()方法,可以去繼承這個(gè)抽象攔截器類;

    它的使用跟上邊的沒有什么區(qū)別;

     

    4:方法過濾攔截器MethodFilterInterceptor

    1:上邊的攔截器都要是針對整個(gè)action,如果針對某個(gè)方法進(jìn)行攔截可以去繼承這個(gè)類;

    它的使用跟上邊的使用方法差不多,只是需要要配置它對那個(gè)方法進(jìn)行攔截,方法過濾攔截器最好不要配置到自己設(shè)置默認(rèn)的攔截器棧里邊,自己手動(dòng)配置.

    interceptor-ref name="myInterceptor3">

                  <param name="includeMethods">execute</param>

                  <param name="excludeMethods">execute</param>

               </interceptor-ref>

               <interceptor-ref name="defaultStack"></interceptor-ref>

    其中includeMethods ,excludeMethods是固定寫法: includeMethods 包含攔截那些方法,多個(gè)方法需要用”,”隔開; excludeMehtods是排除攔截的那些方法;

    5:鑒聽器PreResultListener接口

    1:它的鑒聽點(diǎn)在攔截器執(zhí)行完某個(gè)action方法后,在渲染視圖之前做一些事情;讓某個(gè)類去實(shí)現(xiàn)這個(gè)接口;

    然后向需要它的攔截器中注冊進(jìn)去如下代碼:

    publicclass MyInterceptor3 extends MethodFilterInterceptor {

        privatestaticfinallongserialVersionUID = 3756655410194005443L;

        @Override

        protected String doIntercept(ActionInvocation invocation) throws Exception {

           //把鑒聽器注冊到攔截中去;

           invocation.addPreResultListener(new MyListener());

           System.out.println("my Interceptor3");

           String result=arg0.invoke();

           System.out.println("my interceptor3 finshed!");

           return result;

        }

    }


    評論

    # re: struts2攔截器配置詳解  回復(fù)  更多評論   

    2009-10-13 21:29 by Text
    good...

    # re: struts2攔截器配置詳解  回復(fù)  更多評論   

    2009-10-14 17:39 by www.lovowang.cn
    受到了瘋狂的

    # re: struts2攔截器配置詳解  回復(fù)  更多評論   

    2009-10-14 17:40 by 伊莎貝兒
    放量控股的風(fēng)格

    # re: struts2攔截器配置詳解gggggg  回復(fù)  更多評論   

    2010-08-13 17:56 by kj
    mmnj.,mn

    # re: struts2攔截器配置詳解  回復(fù)  更多評論   

    2016-02-26 10:22 by q
    為薔薇薔薇

    # re: struts2攔截器配置詳解  回復(fù)  更多評論   

    2016-02-26 10:22 by qm
    qweqweqw

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 两个人看的www高清免费视频| 丝瓜app免费下载网址进入ios| 亚洲精品123区在线观看| 亚洲午夜福利在线视频| 青青草国产免费国产是公开 | 亚洲国产成人乱码精品女人久久久不卡 | 久久成人免费大片| 在线免费观看污网站| 4338×亚洲全国最大色成网站| 亚洲av丰满熟妇在线播放| 亚洲熟妇无码八V在线播放| 亚洲欧洲免费无码| 中文字幕亚洲日韩无线码| 亚洲伊人久久大香线蕉| jizz免费观看视频| 国产香蕉九九久久精品免费 | 日本人的色道www免费一区| 亚洲爆乳无码一区二区三区| 日本亚洲精品色婷婷在线影院| 你是我的城池营垒免费观看完整版| 亚洲乱码日产一区三区| 天天综合亚洲色在线精品| 亚洲视频免费一区| 亚洲熟妇av一区二区三区| 免费毛片毛片网址| 久久久久久a亚洲欧洲AV| av无码国产在线看免费网站| 亚洲乱码一区二区三区在线观看 | 亚洲成a人片在线观看日本| 中文字幕免费在线看线人 | 国产精品免费久久久久久久久| 久久国产亚洲电影天堂| 97无码免费人妻超级碰碰夜夜| 免费看美女午夜大片| 亚洲激情视频在线观看| 中文字幕免费视频精品一| 亚洲白色白色永久观看| 久久99国产乱子伦精品免费| 国产亚洲视频在线播放| 一级毛片一级毛片免费毛片| 哒哒哒免费视频观看在线www|