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

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

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

    posts - 61,  comments - 2033,  trackbacks - 0

      cocoon讀[ke'ku:n],繭的意思。

      接連看到幾篇文章談cocoon,因其中牽扯術(shù)語太多,看后一頭霧水,遂起學(xué)習(xí)之心。

      網(wǎng)上找到很多談cocoon的,IBM : developerWorks 中國網(wǎng)站 的在線教程寫得最棒。下面就是學(xué)習(xí)筆記,覺得有意思就順手記下來了。

      以下三行是取源碼的命令。
      cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
      cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic -z3 checkout -r cocoon_20_branch xml-cocoon2
      cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic logout
      
      管道由一些輸入數(shù)據(jù)以及隨后對它進行的一些處理步驟構(gòu)成。每個處理步驟接受前一步的輸出作為輸入,一直到達管道的末端并產(chǎn)生最終輸出。

      Cocoon 包含許多常規(guī)管道組件,根據(jù)在管道中扮演的角色,它們分組成幾種完全不同的類型。

      管道輸入 — 生成器(如FileGenerator,HTMLGenerator,DirectoryGenerator)和閱讀器(常用來讀靜態(tài)文件)
      處理步驟 — 轉(zhuǎn)換器(如XSLT 轉(zhuǎn)換器)和操作
      管道輸出 — 序列化器(如XML,HTML,SVG,PDF序列化器 )
      條件的處理 — 匹配器和選擇器

      Cocoon 管道通常至少由生成器和序列化器組成,但可能含有任意數(shù)量的處理步驟。將數(shù)據(jù)作為 SAX 事件通過 Cocoon 管道傳遞。

      對接收請求和為響應(yīng)提供服務(wù)的邏輯周期如下:
      1、從用戶接受請求。
      2、確定用來解釋該請求并生成響應(yīng)的適當(dāng)管道(使用匹配器)。
      3、從可用的預(yù)配置的組件構(gòu)造管道。
      4、指示管道為請求服務(wù)。
      5、將由管道生成的響應(yīng)返回用戶,可能對結(jié)果進行高速緩存以便以后使用。

      網(wǎng)站地圖(sitemap)兩個功能:
      1、聲明組件;
      2、定義管道。

      XML Server Pages(XSP)編譯過程如下圖:
      

      XSP語法:
      1、xsp:page 元素是每個 XSP 文檔的根元素。它必須有一個標(biāo)識該頁面包含的編程語言 — 具體說就是“java”— 的語言屬性。
      該頁面元素可能包含:
       任意數(shù)目的 xsp:structure 元素
       任意數(shù)目的 xsp:logic 元素
       單個用戶元素
      這最后一個限制非常重要。“用戶元素”表示不在 XSP 名稱空間中的任何元素,包括無名稱空間的元素。之所以有這個限制是因為用戶元素成為由 XSP 頁面創(chuàng)建的 XML 文檔的根元素,而 XML 文檔只能有單個根元素。

      2、xsp:structure 和 xsp:include 元素用于向代碼生成過程提供這些附加提示。這兩個元素是一前一后使用的,xsp:structure 元素將許多 xsp:include 元素組合在一起。每個 xsp:include 定義一個要導(dǎo)入的附加 Java 包或類。

      3、xsp:logic 元素用于將 Java 代碼塊添加到 XSP。
      在這些元素作為 xsp:page 元素的直接子元素出現(xiàn)的任何地方(也就是,單個用戶元素以外),這個代碼塊都應(yīng)包含方法定義和/或成員變量。之所以存在這一點是因為出現(xiàn)在用戶元素以外的代碼不包含在生成器的 generate() 方法內(nèi)。常規(guī)的 Java 語法規(guī)則意味著這個代碼必須是成員或類(也就是,靜態(tài))變量或方法。
      xsp:logic 元素也可以使用在 XSP 頁面的其它地方。在這種情況下,它們應(yīng)該包含將被添加到已編譯的生成器中的 generate() 方法的 Java 語句。這使 xsp:logic 元素類似于 JSP 頁面中使用的 <% ... %>scriptlet 語法。

      4、CDATA 節(jié),它向 XML 解析器發(fā)出信號以對于那節(jié)內(nèi)容不采用良好格式規(guī)則
      <![CDATA[...]]>

      5、xsp:expr 元素用于封裝一個表達式,該表達式的值將直接添加到輸出文檔。與此相反,xsp:logic 元素包含生成器的代碼。因此,xsp:expr 元素等價于在 JSP 中實現(xiàn)類似角色的 <%= ... %> 表達式語法。例如:
    <elements>
       <xsp:logic>
          for (int i=1; i<11; i++)
          {
             <element><xsp:expr>i</xsp:expr></element>
          }
       </xsp:logic>
    </elements>

      6、通過使用 xsp:element 生成動態(tài)元素。如:
    <xsp:element prefix="my" uri="http://www.examples.org">
       <xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
       Element content
    </xsp:element>
    這個示例生成了以下 XML 輸出:
    <my:myElementName xmlns:my="http://www.examples.org">Element content</my:myElementName>

      7、通過使用 xsp:attribute 生成動態(tài)屬性
    <xsp:element>
       <xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
       <xsp:attribute name="myAttribute">myAttributeValue</xsp:attribute>
       Element content
    </xsp:element>
    和(兩個例程沒關(guān)系)
    <image>
       <xsp:attribute name="href"><xsp:expr>calculateImageURL()</xsp:expr></xsp:attribute>
    </image>

      8、xsp:comment 和 xsp:pi 元素用于創(chuàng)建注釋和處理指令。
    <xsp:comment>This is a comment</xsp:comment>
    然后這個注釋變成:
    <!-- This is a comment -->
    請注意:盡管任何文本將被添加到注釋,但任何嵌套標(biāo)記都被忽略了。

    創(chuàng)建處理指令類似于創(chuàng)建動態(tài)元素或?qū)傩?。xsp:pi 元素應(yīng)該有一個標(biāo)識處理指令目標(biāo)的嵌套參數(shù)。照例對 xsp:pi 元素的剩余內(nèi)容求值。這里是一個簡單示例:
    <xsp:pi target="myApplication">
       <xsp:expr>"param1=value, param2=value, generatorTimestamp=" +
       System.currentTimeMillis()</xsp:expr>
    </xsp:pi>
    輸出如下:
    <?myApplication param1=value, param2=value, generatorTimestamp=1017407796870?>

      邏輯單是可以被添加到 XSP 頁面的定制元素庫,是通過使用 XSLT 轉(zhuǎn)換實現(xiàn)的。這些轉(zhuǎn)換將附加的代碼塊和/或 XSP 標(biāo)記引入到 XSP 文檔,這樣擴展了產(chǎn)生 Generator 類的能力。
      每個邏輯單都與一個特殊的名稱空間關(guān)聯(lián)。使用邏輯單僅僅涉及在 XSP 文檔中聲明相應(yīng)的名稱空間,然后在需要的時候添加來自那個名稱空間的元素。如
    <xsp:page language="java"
             xmlns:xsp="http://apache.org/xsp"
             xmlns:util="http://apache.org/xsp/util/2.0">
       <clock>
          <day><util:time format="EE"/></day>
          <month><util:time format="MMMM"/></month>
          <year><util:time format="yyyy"/></year>
          <time><util:time format="HH:mm:ss 'on' dd/MM/yyyy"/></time>
       </clock>
    </xsp:page>

    請注意該頁面聲明了實用程序的名稱空間 http://apache.org/xsp/util/2.0,并使用一個附加的元素,而沒有插入任何附加 Java 代碼。當(dāng)對它求值時,這個頁面產(chǎn)生:

    <clock>
       <day>Fri</day>
       <month>March</month>
       <year>2002</year>
       <time>15:14:27 on 29/03/2002</time>
    </clock>

      Cocoon 2 提供了許多預(yù)先定義的邏輯單,它們提供大量有用功能,而不必編寫 Java 代碼。根據(jù)這些預(yù)先定義的的邏輯單提供的功能類型,可以對它們進行松散分類:
      1、環(huán)境(Environmental)邏輯單 — 提供了對 Cocoon 處理環(huán)境的訪問(例如,請求和響應(yīng)) ,有以下四個:
      1)請求(request)邏輯單提供了對請求屬性的訪問,包括對請求參數(shù)、請求方法(例如,GET、POST 等等)以及請求標(biāo)題的訪問。當(dāng)請求參數(shù)的某些方面用于改變輸出文檔的生成時,這個邏輯單就格外有用。
      2)響應(yīng)(response)邏輯單提供對與當(dāng)前請求關(guān)聯(lián)的 HTTP 響應(yīng)的限制訪問;它只提供對請求標(biāo)題的訪問。XSP 文檔不能用與 Java Servlet 或 JSP 頁面相同的方法執(zhí)行包含或轉(zhuǎn)發(fā),因為分離問題是 Cocoon 2 體系結(jié)構(gòu)的核心部分。這個功能描述在網(wǎng)站地圖中;XSP 頁面生成 XML 內(nèi)容而不指導(dǎo)處理。
      3)會話(session)邏輯單提供了對 HTTP 會話信息的訪問,包括創(chuàng)建和刪除會話以及添加和除去會話屬性的能力。很明顯,這個功能在必須為上下文維護用戶會話的 Web 應(yīng)用程序中是最有用的。Cocoon 2 中的會話管理正好等價于它的 JSP 對手。
      4)cookie 邏輯單提供了 cookie 維護功能,諸如添加和除去 cookie、允許優(yōu)先存儲到用戶的瀏覽器中。


      2、實用程序邏輯單 — 多用途實用程序代碼(例如,文件包含、日志記錄、發(fā)送郵件等等)
      有三個邏輯單,每個邏輯單都提供了一些簡單的實用程序功能。
      1)日期和時間

      2)日志(log)邏輯單處理用戶請求時,它允許從 XSP 生成器上寫入日志消息。如:
    <log:debug>This is a debug message from an XSP generator</log:debug>
    還有附加的 info、warn、error 和 fatal-error 元素用于寫其它各種日志語句。

      3)發(fā)送郵件(sendmail) 邏輯單包含了一個提供從 XSP 頁面對 JavaMail API 訪問的有用元素,如:
    <sendmail:send-mail from="myemail@email.com" to="user@user.com" smtphost="smtphost@email.com">
       <xsp:param name="subject"><xsp:expr>"The subject of this email..."</xsp:expr></xsp:param>
       <xsp:param name="body"><xsp:expr>"The body of this email..."</xsp:expr></xsp:param>
    </sendmail:send-mail>

      3、數(shù)據(jù)操作 — 提供了對數(shù)據(jù)驗證和與數(shù)據(jù)庫關(guān)聯(lián)的功能的訪問
    有兩個邏輯單屬于該類別,其中的一個提供了比另一個明顯更多的功能。

      表單驗證器(form validator)邏輯單從未真正單獨使用。它向 Cocoon 表單驗證器行為(Cocoon Form Validator Action)提供一個整齊的界面。這個行為能夠?qū)?HTML 表單發(fā)送到 Cocoon 應(yīng)用程序的數(shù)據(jù)執(zhí)行基本驗證操作,包括檢查整數(shù)的最小和最大值、檢查字符串的大小以及檢查提供的某些參數(shù)。一個著名功能是能夠測試傳遞的變量是否匹配給定的正則表達式。

      驗證的結(jié)果存儲在請求參數(shù)中。驗證器(validator)邏輯單提供了解釋來自 XSP 頁面內(nèi)的這些結(jié)果的方法。這樣允許為用戶動態(tài)生成錯誤消息。

      在數(shù)據(jù)被確認為有效之后,下一步是將那個數(shù)據(jù)存儲到數(shù)據(jù)庫中。esql 邏輯單提供了執(zhí)行這一步的方法,并提供了更多的功能,包括選擇、刪除和更新數(shù)據(jù)庫。本質(zhì)上,esql 邏輯單提供了將 SQL 語句直接嵌入到 XSP 文檔的方法。然后這個邏輯單生成相應(yīng)的 JDBC 代碼來實現(xiàn) SQL 操作,這樣通過使用 Cocoon 2 簡化了對數(shù)據(jù)庫數(shù)據(jù)的操作和檢索。

    http://hedong.3322.org/1stblog/archives.html

    posted on 2005-11-10 17:56 魚上游 閱讀(464) 評論(0)  編輯  收藏 所屬分類: 爪哇風(fēng)景欣賞
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(82)

    隨筆分類(59)

    文章分類(21)

    相冊

    收藏夾(40)

    GoodSites

    搜索

    •  

    積分與排名

    • 積分 - 1267178
    • 排名 - 22

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 精品亚洲视频在线观看| 亚洲美女视频一区| 日本在线免费观看| 在线观看亚洲AV日韩AV| 亚洲综合激情另类专区| 最近中文字幕国语免费完整| 亚洲avav天堂av在线网毛片| 亚洲日韩乱码中文无码蜜桃臀网站| 国产精品成人观看视频免费| 无码 免费 国产在线观看91| 久久狠狠高潮亚洲精品| 亚洲国产精品国产自在在线| 69xx免费观看视频| h视频免费高清在线观看| 亚洲午夜精品一区二区公牛电影院| 国产yw855.c免费视频| 最近中文字幕无免费| 理论片在线观看免费| 亚洲一级毛片视频| 亚洲日韩精品一区二区三区无码 | 一区二区三区视频免费观看| 亚洲精品在线免费观看视频| 亚洲女人被黑人巨大进入| 青苹果乐园免费高清在线| 国产激情免费视频在线观看| 精品免费AV一区二区三区| 亚洲成a人片在线观看中文!!! | 伊人久久大香线蕉亚洲五月天| 国产精品视频免费| 国产猛男猛女超爽免费视频| 香蕉视频亚洲一级| 日本亚洲色大成网站www久久| 久久噜噜噜久久亚洲va久| 免费少妇a级毛片| 四虎免费在线观看| 日本免费xxxx色视频| 日韩精品极品视频在线观看免费| 一区二区3区免费视频| 日韩国产精品亚洲а∨天堂免| 最新国产成人亚洲精品影院| 亚洲精品天天影视综合网|