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

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

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

    隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
    數據加載中……

    XML在B/S架構開發中的應用

    傳統上, 我們利用JSP+Bean來開發用戶界面, 這里介紹一種利用XML+XSLT的方法來替代JSP

      動機:

      1. JSP構造頁面太痛苦. 代碼嵌入頁面導致頁面臃腫, 邏輯復雜, 不易編輯.
      2. 程序員和美工的接口必須精確定義. 復雜的嵌套輸出必須構造復雜的顯示類作為接口.
      3. 調試JSP必須等到前端程序結束才能看到效果.
      4. 調試JSP效率極低, 一點點小的修改都會引起jsp的重新編譯.

      新的XML的解決方案:

      1. 一個servlet做統一管理. 接受url請求, 映射到對應的程序bean.
      2. 程序bean只產生XML, 由servlet統一用對應的XSL轉換為html.

      好處:

      1. JDK1.4已經自帶XML API和XSLT, 并且支持XSLT 1.0標準. IE6也支持同樣標準.
      2. 開發前先制作接口用的demo XML, 程序員的輸出必須符合此格式. 美工根據此格式制作XSL. 接口可視化, 明確定義.
      3. 只要定義好接口XML, 兩邊幾乎不需要再聯合調試. 美工利用接口XML和IE6就可以直接看到效果.
      4. 程序員只要保證輸出的XML的是否符合接口, 直觀的做文字性對比.
      5. 大量頁面可重用的部分能方便的抽象出來, 在XSL文件中include/import進來. 高度重用, 標準化.
      6. 寫XSL可大量采用template, 結構清晰, 修改方便, 寫頁面變成搭積木, 不再有jsp的層層嵌套.
      7. 對于不同的終端設備, 可以定制不同的XSL, 很方便的就能夠支持手機, pda...
      8. 在程序中利用支持XML的工具, 比如sql2000, 可以直接生成XML結果, 無需復雜編程.

      壞處:

      1. 因為要進行XSLT轉換, 服務器工作量稍微增大.

      以下是幾個關鍵環節的簡單示例:

    ==============servlet中的XML轉換==========
    /**
    * XML是String
    * XSL從文件中讀取
    * 直接寫入response
    */
    //import javax.xml.transform.*;
    //import javax.xml.transform.stream.*;

    StreamSource xml = new StreamSource(new StringReader(xmlSource));
    StreamSource xsl = new StreamSource(xslFileName);

    response.setContentType("text/html; charset=UTF-8");
    StreamResult result = new StreamResult(response.getWriter());

    Transformer trans = TransformerFactory.newInstance().newTransformer(xsl);
    trans.setOutputProperty("encoding","UTF-8");
    trans.transform(xml, result);

    ==================接口XML文件樣本=============
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml:stylesheet type="text/xsl" href="xxx.xsl"?>
    <PAGE>
    <OUTPUT>
    <INFO>推廣UNICODE, 解決多語言問題.</INFO>
    </OUTPUT>
    </PAGE>

    ==================XSL文件樣本=============
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml:namespace prefix = xsl /><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">

    <P align=center>
    <xsl:value-of select="page/output/info"></xsl:value-of>

    </xsl:template>
    </xsl:stylesheet>

      考慮:

      1. 可以把XSLT轉換放在IE進行, IE6以下版本要安裝MSXML3, 對客戶端限制太多.
      2. 在客戶端的XSLT轉換必須完全讀入XML+XSL, 在網速不高或者內容很多的時候反應相當遲鈍.
      3. 手機, pda等設備不能進行XSLT轉換, 所以XSLT轉換還是放在服務器上比較合適.
      4. 因為一般提交內容都比較簡單, 所以沒有采用XML處理, 在程序中也盡量少用XML, 避免影響速度.
      5. 可以在servlet判斷特定參數, 比如發現有xml-view參數時, 不做XSLT轉換, 直接輸出XML到瀏覽器, 供程序調試用.

      說明:

      1. 這里只是利用XSLT的功能來解決網站建設中最頭痛的界面和邏輯分開問題, 不是基于XML的內容處理.
      2. 如果你想趕時髦, 用XML來全副武裝, 可以參考cocoon2, http://xml.apache.org/cocoon/. 但是請記住, cocoon

      還不完善, 你將碰到亂碼, 速度, 文檔不足的問題, 但是它的思想的確值得學習.
      3. 在tomcat, resin中有用filter實現的xslt轉換,可參考。

    posted on 2005-02-17 15:41 閱讀(171) 評論(0)  編輯  收藏 所屬分類: Java_Xml

    主站蜘蛛池模板: 全部免费毛片免费播放| 国产亚洲视频在线播放| 日韩一区二区a片免费观看| 九九九精品成人免费视频| 久久精品国产亚洲av麻| 亚洲宅男精品一区在线观看| 日韩毛片一区视频免费| h视频在线观看免费网站| 亚洲色偷偷综合亚洲AV伊人| 久久亚洲精品无码VA大香大香| 久久水蜜桃亚洲AV无码精品| 91高清免费国产自产拍2021| 亚洲第一永久AV网站久久精品男人的天堂AV | 亚洲国产综合久久天堂| 亚洲精品欧洲精品| 色吊丝性永久免费看码 | 久久精品中文字幕免费| 国产精品高清全国免费观看| 久久精品国产亚洲av麻豆小说| 免费精品国产自产拍在线观看 | 久久这里只精品国产免费10| 亚洲AV无码AV男人的天堂| 日韩毛片在线免费观看| 亚洲精品无码AV中文字幕电影网站| 又粗又长又爽又长黄免费视频| 亚洲香蕉成人AV网站在线观看| 怡红院亚洲红怡院在线观看| 99久久精品日本一区二区免费| 亚洲AV日韩AV永久无码下载| 国产91免费在线观看| 亚洲AV无码片一区二区三区| 国产偷国产偷亚洲高清日韩| 国产成人综合亚洲绿色| 一个人免费观看www视频在线| 亚洲天堂久久精品| 美女在线视频观看影院免费天天看| 四虎免费久久影院| 美女羞羞视频免费网站| 日韩一区二区三区免费体验| 亚洲一级免费毛片| 99精品热线在线观看免费视频|