JAVA流通橋

          JAVA啟發(fā)者

          統(tǒng)計(jì)

          留言簿(3)

          AJAX相關(guān)網(wǎng)址

          Eclipse相關(guān)網(wǎng)址

          Hibernate

          java相關(guān)網(wǎng)址

          LINUX相關(guān)網(wǎng)址

          webwork相關(guān)網(wǎng)址

          友好鏈接

          閱讀排行榜

          評(píng)論排行榜

          xwork.xml配置說明

          示例

           

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <!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="default" extends="webwork-default">
          <interceptors>
          <interceptor-stack name="defaultComponentStack">
          <interceptor-ref name="component"/>
          <interceptor-ref name="defaultStack"/>
          </interceptor-stack>
          </interceptors>
          <default-interceptor-ref name="defaultStack"/>
          <action name="SimpleCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter">
          <result name="success" type="dispatcher">/success.jsp</result>
          <interceptor-ref name="defaultComponentStack"/>
          </action>
          <!--
          - Velocity implementation of the SimpleCounter.  Also demonstrate a more verbose version of result element
          -->
          <action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter">
          <result name="success" type="velocity">
          <param name="location">/success.vm</param>
          </result>
          <interceptor-ref name="defaultComponentStack"/>
          </action>
          <!--
          - Different method can be used (processForm).
          -->
          <action name="formTest" class="com.opensymphony.webwork.example.FormAction" method="processForm" >
          <result name="success" type="dispatcher">/formSuccess.jsp</result>
          <result name="invalid.token" type="dispatcher">/form.jsp</result>
          <interceptor-ref name="defaultStack"/>
          <interceptor-ref name="token"/>
          </action>
          </package>
          </xwork>

          活動(dòng)

           

          <action name="formTest" class="com.opensymphony.webwork.example.FormAction" method="processForm">

          活動(dòng)是WebWork的基本工作單元, 它正是定義了活動(dòng). 活動(dòng)通常有一個(gè)請(qǐng)求(通常是點(diǎn)擊按鈕, 或提交表單). 主要的action元素有兩部分, 友好的名字(在URL中引用, 如saveForm.action)和對(duì)應(yīng)的"處理(handler)"類.

          可選的"method"屬性告訴WebWork應(yīng)當(dāng)調(diào)用活動(dòng)的哪個(gè)方法. 如果你不填寫method屬性, WebWork缺省調(diào)用execute(). 如果活動(dòng)沒有execute()方法, 也沒有在xml中指定method屬性, WebWork將拋出異常.

          同樣, 你也可以在表單中指定"actionName!something"來告訴WebWork調(diào)用"doSomething"方法. 例如, "formTest!save.action"將調(diào)用FormAction的"save"方法. 該方法必須是public且沒有參數(shù):

          public String save() throws Exception
          {
          ...
          return SUCCESS;
          }

          活動(dòng)的所有配置都可以用在"actionName!something"中(截取器, 結(jié)果類型等)

          結(jié)果

          <result name="missing-data" type="dispatcher">
          <param name="location">/form.jsp</param>
          <param name="parameterA">A</param>
          <param name="parameterB">B</param>
          </result>

          Result元素告訴WebWork活動(dòng)執(zhí)行后下一步該做什么. "name"屬性對(duì)應(yīng)活動(dòng)execute() 方法返回的結(jié)果代碼. "type"屬性表示使用哪個(gè)結(jié)果類型(參見結(jié)果類型). 可以使用"param"元素向視圖傳遞參數(shù):

          <result-types>
          ....
          <result-type name="header"
          class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/>
          </result-types>
          <result name="no-content" type="header">
          <param name="status">204</param>
          <param name="headers.customHeaderA">A</param>
          <param name="headers.customHeaderB">B</param>
          </result>

           

          下面是WebWork內(nèi)置的標(biāo)準(zhǔn)結(jié)果代碼(定義在Action接口中), 包括:
          Action.SUCCESS = "success";
          Action.NONE    = "none";
          Action.ERROR   = "error";
          Action.INPUT   = "input";
          Action.LOGIN   = "login";

          你可以擴(kuò)充你認(rèn)為適合的結(jié)果代碼(如"missing-data"). 大多數(shù)情況下你只需使用SUCCESS和ERROR, SUCCESS將前進(jìn)到下一個(gè)頁面.

          如果你只需要指定"location"屬性, 可以使用簡(jiǎn)寫形式:
          <result name="missing-data" type="dispatcher">/form.jsp</result>

          參閱webwork-default.xmlResult Types以了解標(biāo)準(zhǔn)結(jié)果類型

          截取器

          截取器允許定義活動(dòng)執(zhí)行前后的代碼. 截取器是編寫Web應(yīng)用的強(qiáng)大工具. 一些最常用的實(shí)現(xiàn)是:

          • 安全檢查(確保用戶已登陸)
          • 跟蹤紀(jì)錄 (記錄每一個(gè)活動(dòng))
          • 檢查執(zhí)行瓶頸 (在活動(dòng)前后啟動(dòng)計(jì)時(shí)器, 以檢查應(yīng)用瓶頸)
            也可以將截取器連接起來創(chuàng)建一個(gè)截取器. 如果你想完成登陸檢查, 安全檢查, 并記錄每個(gè)活動(dòng)調(diào)用, 使用截取器棧會(huì)十分容易.

          必須先定義截取器(給它命名)然后才能聯(lián)接成棧:

           

          <interceptors>
          <interceptor name="security" class="com.mycompany.security.SecurityInterceptor"/>
          <interceptor-stack name="defaultComponentStack">
          <interceptor-ref name="component"/>
          <interceptor-ref name="defaultStack"/>
          </interceptor-stack>
          </interceptors>

          要在活動(dòng)中使用它們:

          <action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter">
          <result name="success">...</result>
          <interceptor-ref name="defaultComponentStack"/>
          </action>

           

          注意: 可以引用攔截器或棧的名字

          更多細(xì)節(jié)參見截取器.

          視圖

          WebWork支持JSP和Velocity作為應(yīng)用表示層. 本例使用JSP文件. Webwork附帶了標(biāo)簽庫(taglibs). 你可以在JSP中項(xiàng)組件一樣使用標(biāo)簽庫.下面是form.jsp的片斷:

          <%@ taglib prefix="ww" uri="webwork" %>
          <html>
          <head><title>Webwork Form Example</title></head>
          <body>
          <ww:form name="myForm" action="'formTest'" namespace="/" method="POST">
          <table>
          <ww:textfield label="First Name" name="'formBean.firstName'" value="formBean.firstName"/>
          <ww:textfield label="Last Name" name="'formBean.lastName'" value="formBean.lastName"/>
          <ww:submit value="Save Form"/>
          </table>
          </ww:form>
          </body>

          處理經(jīng)過如下:

          1. WebWork監(jiān)控以.action結(jié)尾的URI(定義在web.xml中)
          2. WebWork在活動(dòng)定義中查找活動(dòng)formTest.
          3. WebWork創(chuàng)建formTest并調(diào)用com.opensymphony.webwork.example.FormAction的方法processForm(定義在xwork.xml中).
          4. 該方法處理成功并返回SUCCESS
          5. WebWork將返回值SUCCESS轉(zhuǎn)換成地址formSuccess.jsp(定義在b class="strong">xwork.xml中)并執(zhí)行重定向.

          包含

          為了易于管理大規(guī)模開發(fā)活動(dòng)(包含大量活動(dòng)和配置), WebWork允許在xwork.xml中包含其他配置文件 :

          <xwork>
          <include file="webwork-default.xml"/>
          <include file="user.xml"/>
          <include file="shoppingcart.xml"/>
          <include file="product.xml"/>
          ....
          </xwork>

          被包含文件必須與xwork.xml的格式相同(具有相同的doctype及其它)并放置在類路徑中(通常位于/WEB-INF/classes或/WEB-INF/lib的jar文件中).

          posted on 2007-04-14 14:26 朱巖 閱讀(1492) 評(píng)論(0)  編輯  收藏 所屬分類: webwork文章


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 自治县| 徐州市| 上蔡县| 土默特右旗| 正蓝旗| 云阳县| 西城区| 桦川县| 周口市| 纳雍县| 简阳市| 峨山| 南涧| 鹤山市| 方城县| 霍邱县| 北川| 峨山| 莱阳市| 响水县| 镇坪县| 黎川县| 班戈县| 福安市| 礼泉县| 长海县| 弥渡县| 寿阳县| 华蓥市| 霍州市| 云浮市| 贵德县| 金山区| 辰溪县| 航空| 新营市| 神池县| 铁岭市| 长海县| SHOW| 巩留县|