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

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

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

    隨筆 - 170  文章 - 536  trackbacks - 0
    <2006年11月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    我參與的團(tuán)隊(duì)

    隨筆分類(103)

    搜索

    •  

    積分與排名

    • 積分 - 415105
    • 排名 - 135

    最新評(píng)論

    閱讀排行榜

        這里我們要將 Tapestry 與其它主要的 Java Web 框架做一番比較,包括 Struts,JSF。

        Struts 是一個(gè) Action 方式的 Web 框架,所有的請(qǐng)求直接對(duì)應(yīng)了相應(yīng)的 Action,我們需要通過(guò)一些相應(yīng)的技巧性處理才能把我們?cè)陧?yè)面上的 Click,Value Change 等轉(zhuǎn)換到后端對(duì)應(yīng)的 Action,抽象程度顯得不夠高,并且這樣會(huì)使 Struts 在處理一些較為復(fù)雜的頁(yè)面時(shí)配置過(guò)多,造成開(kāi)發(fā)和維護(hù)上的繁雜。另外 Struts 默認(rèn)使用的 Tiles 模板框架使用了 <jsp:include> 方式的拼裝頁(yè)面技術(shù),并且在每個(gè)頁(yè)面都需要配置,這樣的話,又增加了不少的配置量。在Struts中,經(jīng)常需要使用標(biāo)簽庫(kù)通過(guò) EL(Expression Language)來(lái)顯示組件ActionForm中內(nèi)容,這就涉及到一個(gè)結(jié)合的問(wèn)題,標(biāo)簽庫(kù)是別人寫(xiě)的,而且 Struts 在這方面并沒(méi)有確定的標(biāo)準(zhǔn),如何才能讓自己的組件庫(kù)和現(xiàn)有的組件庫(kù)很好的結(jié)合,難度和麻煩就體現(xiàn)在這個(gè)結(jié)合點(diǎn)上。

        JSF的視圖層開(kāi)發(fā)的基本思路和Struts差不多,只不過(guò)換了不同標(biāo)簽庫(kù),也需要標(biāo)簽庫(kù)+組件的結(jié)合思考,不過(guò)因?yàn)榻M件這里是通用組件,沒(méi)有什么限制,并且遵循了一個(gè)共同的標(biāo)準(zhǔn),所以這樣比Struts要輕松一些。JSF 提供了一套完整的生命周期和組件標(biāo)準(zhǔn),我們很容易的為其定制一些組件和使用現(xiàn)有的組件庫(kù)。另外JSF采用了事件驅(qū)動(dòng)的方式,同一個(gè)頁(yè)面對(duì)應(yīng)的多個(gè) Action 請(qǐng)求會(huì)比較直接的通過(guò) EL映射到后端對(duì)應(yīng)的 Java 方法上,從而大大減少了復(fù)雜頁(yè)面的配置量。但是在默認(rèn)情況下,JSF 每個(gè)頁(yè)面的都需要配置其單獨(dú)的導(dǎo)航,如果頁(yè)面導(dǎo)航復(fù)雜的話,配置還是不少的。JSF 在默認(rèn)情況下并沒(méi)有集成模板引擎,但是開(kāi)源的 Facelets 模板引擎提供了類似 Tapestry 的模板方式,從另外一種方式簡(jiǎn)化了 JSF 的開(kāi)發(fā)。JSF 采用了 HTML 頁(yè)面保存組件樹(shù)的機(jī)制,頁(yè)面的所有組件和組件狀態(tài)被序列化到頁(yè)面中或者 Session 中,這樣的話,如果在頁(yè)面上 Javascrīpt 通過(guò)修改 DOM 的方式修改頁(yè)面的組件,會(huì)導(dǎo)致頁(yè)面和組件樹(shù)不一致,導(dǎo)致 JSF 無(wú)法正常工作,但是可以通過(guò) Ajax 方式向服務(wù)端發(fā)出更新組件樹(shù)的請(qǐng)求,但這樣需要走完 JSF 整個(gè)生命周期,顯得較為笨重,所以從架構(gòu)上來(lái)看,JSF 在處理頁(yè)面問(wèn)題上不夠靈活,也不夠 Ajax 化。

        Tapestry使用了組件庫(kù)的概念替代了標(biāo)簽庫(kù),沒(méi)有標(biāo)簽庫(kù)概念,這樣就沒(méi)有標(biāo)簽庫(kù)和自己的組件需要結(jié)合的問(wèn)題,都是組件的使用,組件中分Tapestry標(biāo)準(zhǔn)組件和自己定義的組件,這也是接觸了JSP體系的人學(xué)習(xí)Tapestry面臨的一個(gè)思路轉(zhuǎn)換。這樣極大的減小了頁(yè)面修改而帶來(lái)的修改難度。同為事件驅(qū)動(dòng)的框架,在配置上 Tapestry 有著和 JSF 類似的優(yōu)勢(shì),我們只需要簡(jiǎn)單的在 XML 文件里配置事件和后端方法的對(duì)應(yīng)關(guān)系,或者使用 OGNL 直接在頁(yè)面中與后端方法建立關(guān)聯(lián)。在頁(yè)面導(dǎo)航上,Tapestry 是根據(jù)監(jiān)聽(tīng)器方法的返回值而確定,這樣就省去了頁(yè)面導(dǎo)航部分的配置。Tapestry 的模板技術(shù)天生就是其優(yōu)勢(shì)所在,這樣的方式將前臺(tái)頁(yè)面的制作和后臺(tái)業(yè)務(wù)系統(tǒng)的開(kāi)發(fā)完美的結(jié)合在一起。Tapestry 因?yàn)闆](méi)有 JSF 這樣的組件樹(shù)綁定的方式,就能夠比較容易的和 Ajax 綁定在一起,目前開(kāi)源的 Tacos 組件庫(kù)就提供了很多這樣的組件,并且整合了 Dojo Toolkit 使得我們開(kāi)發(fā)頁(yè)面中有了更多好用的組件,并且只需要很簡(jiǎn)單的配置工作就可以使用功能強(qiáng)大的 Web 組件和 Ajax 功能。

        另外,JSF/Tapestry不只是支持HTML,也支持多種客戶端語(yǔ)言如WML或XUI等。

    posted on 2006-11-22 14:20 steady 閱讀(1437) 評(píng)論(1)  編輯  收藏

    FeedBack:
    # re: Tapestry,JSF和Struts的比較 2007-06-03 17:45 suiyueln
    哥們,介紹一本jsf比較好的資料書(shū)好嗎?我學(xué)習(xí)用《jsf實(shí)戰(zhàn)》,這本書(shū)搞的我昏頭轉(zhuǎn)向,不好!你給介紹一本好嗎?我的QQ:2289685,謝謝!  回復(fù)  更多評(píng)論
      

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成熟女人特级毛片www免费| 99久久精品免费精品国产| 亚洲另类春色国产精品| 免费成人在线电影| 亚洲人成网7777777国产 | 久久精品国产亚洲AV久| 亚洲gay片在线gv网站| a级毛片免费高清视频| 亚洲欧洲自拍拍偷精品 美利坚| 成人亚洲国产精品久久| 亚洲国产午夜福利在线播放| 一区二区三区在线免费| 免费观看黄色的网站| 国产裸模视频免费区无码| 国产亚洲福利精品一区二区| 未满十八18禁止免费无码网站| 亚洲bt加勒比一区二区| 日本视频免费观看| 成年女人免费视频播放77777| 最新国产精品亚洲| 又黄又大又爽免费视频| caoporn国产精品免费| 亚洲成AV人片一区二区密柚| 色多多免费视频观看区一区| 国产亚洲老熟女视频| 精品国产亚洲第一区二区三区| 免费人成视频x8x8入口| 成全在线观看免费观看大全| 亚洲国产小视频精品久久久三级| 国产免费人成视频尤勿视频| 国产性生交xxxxx免费| 亚欧洲精品在线视频免费观看| 亚洲国产精品免费视频| 久久久久久久久免费看无码| 亚洲视频在线观看地址| 免费看少妇作爱视频| 亚洲欧洲综合在线| 免费国产污网站在线观看15| 中文字幕乱码免费看电影| 亚洲精品在线观看视频| 成人在线视频免费|