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

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

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

    本站不再更新,歡迎光臨 java開(kāi)發(fā)技術(shù)網(wǎng)
    隨筆-230  評(píng)論-230  文章-8  trackbacks-0
     

    XWork配置詳述

    XWork配置文件是以“xwork”命名的.xml文件,它必需放到類(lèi)路徑(classPath)的根目錄, Web應(yīng)用一般放在classes目錄中,它需要遵守DTD的規(guī)范(現(xiàn)在是xwork-1.0.dtd)。這個(gè)文件定義了我們的ActionInterceptorResult的配置和相互之間的映射。下面我們看看用戶(hù)注冊(cè)的完整XWork配置文件:

    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">

     

    <xwork>

     

        <include file="webwork-default.xml"/>

       

        <package name="example" extends="webwork-default">

           <action name="register" class="example.register.RegisterAction" >

               <result name="success" type="dispatcher">

                  <param name="location">/register-result.jsp</param>

               </result>

               <interceptor-ref name="params"/>

           </action>

          

           <action name="registersupport" class="example.register.RegisterActionSupport" >

               <result name="success" type="dispatcher">

                  <param name="location">/register-result.jsp</param>

               </result>

               <result name="input" type="dispatcher">

                  <param name="location">/registerSupport.jsp</param>

               </result>

               <interceptor-ref name="validationWorkflowStack"/>

           </action>

          

        </package>

     

    </xwork>

    xwork.xml文件的標(biāo)簽元素

    Xworkxwork配置文件的所有內(nèi)容,都是定義在<xwork>標(biāo)簽中,它的直接子標(biāo)簽有<package><include>

    Package我們的ActionInterceptorResult都是在此標(biāo)簽中定義。<package>標(biāo)簽有一個(gè)必需的屬性“name”,它用來(lái)標(biāo)識(shí)唯一的一個(gè)package。屬性“extends”是可選的,它用來(lái)繼承前面定義的一個(gè)或一個(gè)以上package配置信息,包括所有的interceptorinterceptor-stackaction的配置信息。注意,配置文件按文檔的順序,由上向下執(zhí)行,因此,用“extends”引用的package必需在引用之前定義。屬性“sbstract”是可選的,它用來(lái)設(shè)置package為抽象的package,它可以被繼承同時(shí)它的Action配置信息在運(yùn)行時(shí)將不可見(jiàn)。

    屬性namespace也是可選的,它用來(lái)分隔不同package定義的action,讓這些action處于不同的命名空間(namespaces)。這樣,我們不同的package可以有相同的action命名,因?yàn)榭梢酝ㄟ^(guò)命名空間來(lái)區(qū)分。如果不指定namespace,默認(rèn)的是空字符串。命名空間也可以被用在安全控制方面,它可以根據(jù)不同的命名空間指定不同的訪問(wèn)權(quán)限。

    是否必需

      

    name

    用來(lái)標(biāo)識(shí)package的名稱(chēng)

    extends

    繼承它所擴(kuò)展的package配置信息

    namespace

    指定package的命名空間,默認(rèn)是””

    abstract

    聲明package是抽象的

     

    Result-type用來(lái)定義輸出結(jié)果類(lèi)型的Class,它用簡(jiǎn)單的名-值對(duì)來(lái)定義。當(dāng)然,我們自己寫(xiě)的輸出結(jié)果類(lèi)型也必需在這里定義。例如:

    <result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>default="true"表示如果在Actionresult中不指定result-type,就使用這個(gè)默認(rèn)的result-type

     

    Interceptors它是一個(gè)簡(jiǎn)單的<interceptors>  <interceptors/>標(biāo)簽,我們的interceptorinterceptor-stack都在此標(biāo)簽內(nèi)定義。

     

    Interceptor當(dāng)然,就是用來(lái)定義我們的攔截器。它的定義非常簡(jiǎn)單,名-值對(duì)的形式。例如:<interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>。在action中,可以通過(guò)<interceptor-ref />來(lái)直接引用前面定義了的攔截器。

     

    Interceptor-stack用來(lái)將上面定義的interceptor組織成堆棧的形式,這樣我們就可以創(chuàng)建一組標(biāo)準(zhǔn)的interceptor,讓它按照順序執(zhí)行。在我們的Action中直接引用這個(gè)interceptor堆棧就可以了,不用逐個(gè)interceptor去引用。

    例如:

    <interceptor-stack name="validationWorkflowStack">

                   <interceptor-ref name="defaultStack"/>

                    <interceptor-ref name="validation"/>

                    <interceptor-ref name="workflow"/>

                </interceptor-stack>

    Interceptor Param:我們的interceptor是在ActionConfig級(jí)別被實(shí)例化和存儲(chǔ)的,也就是說(shuō)一個(gè)Action引用的每個(gè)interceptor都會(huì)有相應(yīng)的實(shí)例。這樣,我們?cè)诙x和引用interceptor的時(shí)候都可以為它設(shè)置相應(yīng)的參數(shù)值。例如:

    <interceptor name="test" class="com.opensymphony.xwork.TestInterceptor">

        <param name="foo">expectedFoo</param>

    </interceptor>

    ActionInterceptor-stack中引用時(shí)也可以設(shè)置參數(shù),例如:

    <interceptor-ref name="test">

        <param name="expectedFoo">expectedFoo</param>

    </interceptor-ref>

    注意:在Action引用的時(shí)候,如果引用的是Interceptor-stack,則不允許設(shè)置參數(shù),否則會(huì)報(bào)錯(cuò)。

     

    Global-results它允許我們定義全局的輸出結(jié)果(global result),比如登陸頁(yè)面、操作錯(cuò)誤處理頁(yè)面。只要繼承它所在的package,這些輸出結(jié)果都是可見(jiàn)的。

    例如:

    <global-results>

               <result name="login" type="dispatcher">

                  <param name="location">/login.jsp</param>

               </result>

               <result name="error" type="dispatcher">

                  <param name="location">/error.jsp</param>

               </result>

           </global-results>

    如果我們的Action執(zhí)行完返回“login”,它將調(diào)用上面的這個(gè)輸出結(jié)果,將輸出派遣到根目錄下的login.jsp頁(yè)面。

     

    Action用來(lái)配置Action的名稱(chēng)(name)和它對(duì)應(yīng)的Class。我們將通過(guò)這個(gè)Action的名稱(chēng)和它所在packagenamespace去配置文件中取得這個(gè)Action的配置信息。它可以通過(guò)<param>來(lái)設(shè)置參數(shù),Action在執(zhí)行的時(shí)候會(huì)取得配置文件里設(shè)置的參數(shù)(通過(guò)攔截器StaticParametersInterceptor)。

    Action可以配置一個(gè)或多個(gè)輸出結(jié)果(result)。一個(gè)輸出結(jié)果的名稱(chēng),對(duì)應(yīng)于Action執(zhí)行完成返回的字符串。<result>標(biāo)簽的type屬性,對(duì)應(yīng)我們前面定義過(guò)的result-type,說(shuō)明reslut的類(lèi)型。例如:

    <action name="register" class="example.register.RegisterAction" >

               <result name="success" type="dispatcher">

                  <param name="location">/register-result.jsp</param>

               </result>

               <interceptor-ref name="params"/>

           </action>

    當(dāng)然,我們的Action用到的攔截器也是在這里配置的,通過(guò)<interceptor-ref>標(biāo)簽,屬性“name”的值,對(duì)應(yīng)前面定義的interceptorinterceptor-stack如果Action中沒(méi)有用<interceptor-ref>標(biāo)簽指定攔截器,它將使用默認(rèn)的<default-interceptor-ref>標(biāo)簽定義的攔截器。

     

    Includexwork..xml文件可以被分成好幾個(gè)不同的文件,xwork..xml通過(guò)<include>標(biāo)簽引用被包含的文件,例如:<include file="webwork-default.xml"/>。被包含的文件必需是package標(biāo)簽里的內(nèi)容,我們看看<include>標(biāo)簽在配置文件里的位置就知道了。如果要繼承被包含文件的package,我們必需將<include>標(biāo)簽放在其上面,因?yàn)榕渲梦募前凑沼缮隙碌捻樞蚪馕龅摹?/span>

    posted on 2007-04-06 18:36 有貓相伴的日子 閱讀(6173) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): j2ee

    評(píng)論:
    # re: xwork配置詳述 2007-04-06 23:24 | 軒朗=maninred
    感覺(jué)好像在抄書(shū)。  回復(fù)  更多評(píng)論
      
    # re: xwork配置詳述 2007-04-09 14:04 | 有貓相伴的日子
    應(yīng)該是抄書(shū)的吧!!!!!  回復(fù)  更多評(píng)論
      
    # re: xwork配置詳述 2008-01-28 16:22 | good morning
    不錯(cuò),對(duì)于初學(xué)者挺有用  回復(fù)  更多評(píng)論
      
    # re: xwork配置詳述[未登錄](méi) 2009-02-02 15:24 | cy
    多謝,,學(xué)習(xí)了  回復(fù)  更多評(píng)論
      
    本站不再更新,歡迎光臨 java開(kāi)發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 国产在线观看免费完整版中文版| 中文字幕在线免费看线人| 亚洲永久中文字幕在线| 亚洲精品成人网站在线观看| 国产亚洲精品拍拍拍拍拍| 国产一级一片免费播放i| 大陆一级毛片免费视频观看| 成年免费大片黄在线观看岛国| 2021国内精品久久久久精免费| 亚洲精品在线免费观看| 久久国产色AV免费看| 91香蕉国产线在线观看免费| 18成禁人视频免费网站| 无码区日韩特区永久免费系列| 午夜性色一区二区三区免费不卡视频| 97免费人妻无码视频| 亚洲中文无码永久免费| 全免费a级毛片免费**视频| 精品国产麻豆免费网站| 免费va人成视频网站全| 亚洲日本在线观看视频| 亚洲人成网77777亚洲色| 好看的亚洲黄色经典| 久久精品国产亚洲AV无码娇色 | 99久久人妻精品免费一区| 中文字幕在线免费| 亚洲免费网站观看视频| 国产又大又长又粗又硬的免费视频| 亚洲欧洲日本在线| 精品久久香蕉国产线看观看亚洲| 99亚洲精品高清一二区| 涩涩色中文综合亚洲| 小说专区亚洲春色校园| 一级毛片完整版免费播放一区| 日韩精品无码免费专区午夜不卡| 少妇人妻偷人精品免费视频| 免费视频专区一国产盗摄| 国产猛烈高潮尖叫视频免费| 中文字幕亚洲一区| 亚洲最大在线观看| 国产成人亚洲精品91专区高清|