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

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

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

    JAVA流通橋

    JAVA啟發者

    統計

    留言簿(3)

    AJAX相關網址

    Eclipse相關網址

    Hibernate

    java相關網址

    LINUX相關網址

    webwork相關網址

    友好鏈接

    閱讀排行榜

    評論排行榜

    XWork配置詳述

    XWork配置詳述

    XWork配置文件是以“xwork”命名的.xml文件,它必需放到類路徑(classPath)的根目錄, Web應用一般放在classes目錄中,它需要遵守DTD的規范(現在是xwork-1.0.dtd)。這個文件定義了我們的ActionInterceptorResult的配置和相互之間的映射。下面我們看看用戶注冊的完整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"/>

       

           <action name="registersupport" class="com.test.RegisterActionSupport" >

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

                  <param name="location">/registerResult.vm</param>

               </result>

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

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

               </result>

               <interceptor-ref name="validationWorkflowStack"/>

           </action>

          

        </package>

     

    </xwork>

    xwork.xml文件的標簽元素

    Xworkxwork配置文件的所有內容,都是定義在<xwork>標簽中,它的直接子標簽有<package><include>

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

    屬性namespace也是可選的,它用來分隔不同package定義的action,讓這些action處于不同的命名空間(namespaces)。這樣,我們不同的package可以有相同的action命名,因為可以通過命名空間來區分。如果不指定namespace,默認的是空字符串。命名空間也可以被用在安全控制方面,它可以根據不同的命名空間指定不同的訪問權限。

    是否必需

      

    name

    用來標識package的名稱

    extends

    繼承它所擴展的package配置信息

    namespace

    指定package的命名空間,默認是””

    abstract

    聲明package是抽象的

     

    Result-type用來定義輸出結果類型的Class,它用簡單的名-值對來定義。當然,我們自己寫的輸出結果類型也必需在這里定義。例如:

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

     

    Interceptors它是一個簡單的<interceptors>  <interceptors/>標簽,我們的interceptorinterceptor-stack都在此標簽內定義。

     

    Interceptor當然,就是用來定義我們的攔截器。它的定義非常簡單,名-值對的形式。例如:<interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>。在action中,可以通過<interceptor-ref />來直接引用前面定義了的攔截器。

     

    Interceptor-stack用來將上面定義的interceptor組織成堆棧的形式,這樣我們就可以創建一組標準的interceptor,讓它按照順序執行。在我們的Action中直接引用這個interceptor堆棧就可以了,不用逐個interceptor去引用。

    例如:

    <interceptor-stack name="validationWorkflowStack">

                    <interceptor-ref name="defaultStack"/>

                    <interceptor-ref name="validation"/>

                    <interceptor-ref name="workflow"/>

                </interceptor-stack>

    Interceptor Param:我們的interceptor是在ActionConfig級別被實例化和存儲的,也就是說一個Action引用的每個interceptor都會有相應的實例。這樣,我們在定義和引用interceptor的時候都可以為它設置相應的參數值。例如:

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

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

    </interceptor>

    ActionInterceptor-stack中引用時也可以設置參數,例如:

    <interceptor-ref name="test">

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

    </interceptor-ref>

    注意:在Action引用的時候,如果引用的是Interceptor-stack,則不允許設置參數,否則會報錯。

     

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

    例如:

    <global-results>

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

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

               </result>

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

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

               </result>

           </global-results>

    如果我們的Action執行完返回“login”,它將調用上面的這個輸出結果,將輸出派遣到根目錄下的login.jsp頁面。

     

    Action用來配置Action的名稱(name)和它對應的Class。我們將通過這個Action的名稱和它所在packagenamespace去配置文件中取得這個Action的配置信息。它可以通過<param>來設置參數,Action在執行的時候會取得配置文件里設置的參數(通過攔截器StaticParametersInterceptor)。

    Action可以配置一個或多個輸出結果(result)。一個輸出結果的名稱,對應于Action執行完成返回的字符串。<result>標簽的type屬性,對應我們前面定義過的result-type,說明reslut的類型。例如:

    <action name="register" class="com.test.RegisterAction" >

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

                  <param name="location">/registerResult.vm</param>

               </result>

               <interceptor-ref name="params"/>

           </action>

    當然,我們的Action用到的攔截器也是在這里配置的,通過<interceptor-ref>標簽,屬性“name”的值,對應前面定義的interceptorinterceptor-stack如果Action中沒有用<interceptor-ref>標簽指定攔截器,它將使用默認的<default-interceptor-ref>標簽定義的攔截器。

     

    Includexwork..xml文件可以被分成好幾個不同的文件,xwork..xml通過<include>標簽引用被包含的文件,例如:<include file="webwork-default.xml"/>。被包含的文件必需是package標簽里的內容,我們看看<include>標簽在配置文件里的位置就知道了。如果要繼承被包含文件的package,我們必需將<include>標簽放在其上面,因為配置文件是按照由上而下的順序解析的。

    posted on 2007-04-12 17:28 朱巖 閱讀(468) 評論(0)  編輯  收藏 所屬分類: webwork文章

    主站蜘蛛池模板: 卡一卡二卡三在线入口免费| 亚洲精品无码成人片久久| 鲁啊鲁在线视频免费播放| 亚洲熟妇丰满多毛XXXX| 亚洲一区免费在线观看| 国产亚洲漂亮白嫩美女在线| 亚洲av无码不卡| 在线观看免费国产视频| 免费不卡在线观看AV| WWW国产亚洲精品久久麻豆| 亚洲av日韩av无码黑人| 四虎永久免费地址在线网站 | 亚洲jizzjizz少妇| 亚洲精品无码成人片久久| 色视频色露露永久免费观看 | 成人免费福利电影| 免费在线黄色电影| 亚洲AV永久无码精品放毛片| 久久精品国产亚洲av日韩| 亚洲av再在线观看| 成人性生免费视频| 无码国产精品一区二区免费式芒果 | 在线视频免费国产成人| 91青青青国产在观免费影视| 香蕉国产在线观看免费| 亚洲无mate20pro麻豆| 久久青草亚洲AV无码麻豆| 国产成人免费手机在线观看视频 | 羞羞漫画小舞被黄漫免费| 亚洲不卡视频在线观看| 亚洲精品成人片在线播放| 免费国产怡红院在线观看| 成人女人A级毛片免费软件| 无码人妻一区二区三区免费看| 男男gay做爽爽免费视频| 麻豆狠色伊人亚洲综合网站 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 久久久青草青青亚洲国产免观 | 亚洲宅男精品一区在线观看| 午夜亚洲AV日韩AV无码大全| 久久影视综合亚洲|