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

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

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

    隨筆-3  評(píng)論-2  文章-1  trackbacks-0

        
           在web.xml文件里配置一個(gè)派遣器ServletDispatcher,以接收所有以action結(jié)尾的url請(qǐng)求。并進(jìn)行http請(qǐng)求調(diào)度處理.
    <servlet>
       <servlet-name></servlet-name>
       <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>webwork</servlet-name>
       <url-pattern>*.action</url-pattern>
    </servlet-mapping>

    當(dāng)ServletDispatche調(diào)度器接收到一個(gè).action結(jié)尾的請(qǐng)求時(shí),會(huì)調(diào)用ServletDispatche類的service方法進(jìn)行處理,該方法最終是創(chuàng)建一個(gè)ActionProxy對(duì)象,并通過執(zhí)行ActionProxy中的execute方法來
    調(diào)用所請(qǐng)求的Action的execute方法.之前要執(zhí)行一些方法來創(chuàng)造條件:創(chuàng)建Action上下文===>從request中獲得值堆棧stack===>創(chuàng)建ActionProxyFactory對(duì)象,并初始化一個(gè)DefaultActionProxy對(duì)象====>通過DefaultAction的構(gòu)造函數(shù)調(diào)用ConfigurationManager獲得當(dāng)前請(qǐng)求的Action在xwork.xml中的配置信息====>DefaultActionProxy中的prepare方法通過創(chuàng)建一個(gè)ActionInvocation對(duì)象來實(shí)現(xiàn)對(duì)請(qǐng)求action的調(diào)用。

    AroundInterceptor攔截機(jī)-->
    DefaultActionInvocation中有一個(gè)數(shù)組維護(hù)了攔截機(jī)的執(zhí)行順序:
    1、StaticParametersInterceptor, 2、ParametersInterceptor, 3、WebWorkConversionErrorInterceptor
    4、ModelDrivenInterceptor 5、ExternalReferencesInterceptor
    6、StaticParametersInterceptor 7、parametersInterceptor, 8、WebWorkConversionErrorInterceptor
    9、ModelDrivenInterceptor 10、ValidationInterceptor
    注:這里1、2、3、4攔截機(jī)執(zhí)行了兩次,為什么會(huì)執(zhí)行兩次呢?
    疑問:這里的執(zhí)行順序和webwork-default.xml中的<interceptors>配置有何關(guān)聯(lián)?

    Action ---> 根據(jù)Action實(shí)現(xiàn)相應(yīng)的Action,ModelDriven接口調(diào)用基類的
    ParametersInterceptor中:
          final Map parameters = ActionContext.getContext().getParameters();

    從AroundInterceptor的context中取出頁面提交字段的名稱和值,然后它會(huì)先把stack.pus(modelDriven.getModel()); modelDriven.getModel()放到CompoundRoot中(CompounRoot是一個(gè)ArrayList)上面提到有四個(gè)攔截機(jī)執(zhí)行兩次,因?yàn)榈谝淮我猵ush進(jìn)去一個(gè)空的對(duì)象,方便填值,第二次放的是填充好的對(duì)象。也就是Action中g(shù)etModel()的對(duì)象。把值從parameters 設(shè)置到OgnlValueStack的CompoundRoot的第一個(gè)下標(biāo)中的Action里的getModel()對(duì)象里code:stack.setValue(name, value);name對(duì)應(yīng)的是getModel()對(duì)應(yīng)的字段,value為要填充的值.

    posted on 2005-12-06 23:12 java驛館 閱讀(492) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE隨談

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av无码一区二区三区四区| 亚洲视频国产视频| 精品在线视频免费| 亚洲av日韩av无码| 国产精品久久久久久亚洲影视| 日韩免费高清一级毛片在线| 亚洲另类无码专区丝袜| 日韩精品免费电影| 男人j进女人p免费视频| 亚洲最大av无码网址| 国产在线精品观看免费观看| 亚洲精品无码高潮喷水在线| 久久国产精品免费看| 久久亚洲精品无码aⅴ大香| 免费精品国产自产拍在| 亚洲一区二区三区国产精华液| 日韩免费观看的一级毛片| 色多多A级毛片免费看| 国产亚洲精AA在线观看SEE| 99久久精品免费视频| 亚洲综合在线一区二区三区| 成人亚洲网站www在线观看| 成av免费大片黄在线观看| 91情国产l精品国产亚洲区| 波多野结衣在线免费观看| 日韩在线视精品在亚洲| 亚洲va中文字幕无码久久| 久草免费在线观看视频| 国产亚洲欧美在线观看| 亚洲精品乱码久久久久66| 国产精品久久免费| 免费无遮挡无码视频在线观看| 亚洲AV永久无码区成人网站| 免费H网站在线观看的| 有色视频在线观看免费高清在线直播| 久久久久亚洲Av片无码v| 免费观看一级毛片| 日韩视频在线观看免费| 亚洲精品国产suv一区88| 久久亚洲伊人中字综合精品| 青青青青青青久久久免费观看|