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

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

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

    空間站

    北極心空

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    作者:?? by Phil Zoio
    翻譯:?? BlueCrystal
    來(lái)自:??
    http://www.theserverside.com/articles/article.tss?l=JSFTapestry

      目前應(yīng)用很廣泛而且也很成熟的Struts應(yīng)用開(kāi)發(fā)框架,在未來(lái)幾年里將會(huì)逐漸淡出,其基于Action(action-based)的開(kāi)發(fā)模型也將被活躍的java社區(qū)所推崇的新的開(kāi)發(fā)模型所替代,對(duì)于java開(kāi)源社區(qū)來(lái)說(shuō),追求完美是很多人的理想。在2000年初誕生的Struts以及其他類似的 MVC(Model View Controler)框架主要都是以操作為中心,且都是無(wú)狀態(tài)的開(kāi)發(fā)模型,而現(xiàn)在,基于組件(component-based)和事件驅(qū)動(dòng)(event- driven)的開(kāi)發(fā)模型逐漸流行起來(lái),在很多時(shí)候都成了Struts的有利競(jìng)爭(zhēng)者,這其中來(lái)自jcp的jsr127-JavaServer Faces(JSF)以及來(lái)自apache的Tapestry是其中的佼佼者。

      在這篇文章中,我們將把這兩種框架JSF和Tapestry進(jìn)行詳細(xì)的對(duì)比。我們的比較將涉及到兩種框架的設(shè)計(jì)、運(yùn)行環(huán)境以及如何開(kāi)發(fā)。比較的目的在于讓讀者了解這兩種框架各自的優(yōu)缺點(diǎn),以便于在自己的項(xiàng)目中,根據(jù)實(shí)際情況,選擇合適的框架。該文章的內(nèi)容基于JSF1.1和Tapestry3.0.3 (在個(gè)別地方由于需要會(huì)談到Tapestry4.0)。


      JSF和Tapestry簡(jiǎn)介
    ?? ?
      JSF源于JCP(Java Community Process)的JSR127規(guī)范。Sun公司自己同時(shí)也對(duì)該規(guī)范提供了一個(gè)實(shí)現(xiàn),目前的版本是1.1,而且該項(xiàng)目的設(shè)計(jì)者之一正是Struts的作者 Craig McClanahan。另外一個(gè)JSF的實(shí)現(xiàn),就是Apache的一個(gè)項(xiàng)目MyFaces。目前,幾個(gè)主流的java開(kāi)發(fā)工具廠商都在其java ide中提供了對(duì)jsf的支持,比如Sun、Oracle、IBM、Borland等,而且JSF的后續(xù)版本JSF1.2也將成為J2EE5.0的一個(gè)組成部分。
    ?? ?
      Tapestry最初于2000年在SourceForge注冊(cè),來(lái)自于Apple WebObjects,隨后,于2003年成為Apache的一個(gè)項(xiàng)目。與JSF不同的是,Tapestry并不是某一個(gè)jsr規(guī)范的實(shí)現(xiàn),它僅僅是一個(gè)開(kāi)源項(xiàng)目,當(dāng)前版本是3.0.3。4.0版本預(yù)計(jì)也將在后面的一段時(shí)間內(nèi)推出。
      JSF和Tapestry作為MVC框架,在一些基本特性上是非常類似的:

    • ??? 它們都讓開(kāi)發(fā)者不再直接與Servlet API打交道,而是讓開(kāi)發(fā)者在一個(gè)更高的抽象層上思考問(wèn)題;
    • ??? 它們都將web頁(yè)面上的顯示元素綁定到一個(gè)java對(duì)象的某個(gè)屬性上,這些屬性可能是字符串、數(shù)字、日期或者其他類型,并且由該對(duì)象來(lái)維護(hù)其狀態(tài)。用戶在頁(yè)面上的交互行為(比如用鼠標(biāo)點(diǎn)擊一個(gè)按鈕或者鏈接)都直接映射為java類中的一個(gè)事件處理方法;
    • ??? 兩種框架都支持組件式的開(kāi)發(fā)方式,并且開(kāi)發(fā)的組件可被其他開(kāi)發(fā)者重用。兩種框架都自帶一個(gè)標(biāo)準(zhǔn)組件庫(kù),提供web開(kāi)發(fā)的常見(jiàn)通用功能。

      在下面的章節(jié)里面,我們將會(huì)看見(jiàn)這兩個(gè)框架在各自的實(shí)現(xiàn)方式上是有很大區(qū)別的。對(duì)于大多數(shù)程序員來(lái)說(shuō),基于兩種框架做開(kāi)發(fā),將是非常不同的兩種體驗(yàn)。

      Sidebar: 例子程序
      在下面本文提供了一個(gè)例子程序,該程序的代碼大部分都將在這片文章中做出詳細(xì)的描述。這個(gè)程序主要就是一個(gè)管理個(gè)人假期的工具,它的主要功能包括:
      * 一個(gè)home界面, 列出所有登記的假期,包括假期開(kāi)始時(shí)間、天數(shù)以及一下描述信息;
      * 一個(gè)detail界面,用于瀏覽某一登記假期的詳細(xì)信息;
      * 一個(gè)new界面,用于添加一個(gè)假期信息。

      下面這幅圖展示了該程序的主體流程和功能:


      你可以從下列地址下載該程序基于不同框架的源代碼:
      JSF version
      Tapestry version

    posted on 2006-12-08 19:31 蘆葦 閱讀(231) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 亚洲精华液一二三产区| eeuss影院免费直达入口| 免费jjzz在线播放国产| 国产午夜不卡AV免费| 亚洲av永久无码精品三区在线4 | 国产天堂亚洲精品| 夜夜春亚洲嫩草影院| 丁香花免费完整高清观看| 一区免费在线观看| 亚洲精品在线播放视频| 免费成人午夜视频| 久久99国产乱子伦精品免费| 国产亚洲精品成人久久网站| 亚洲视频精品在线| 亚洲成av人片一区二区三区| 18女人毛片水真多免费| 日日躁狠狠躁狠狠爱免费视频| 亚洲国产成人精品无码区在线网站| 黄色一级毛片免费| 国产成人精品久久亚洲高清不卡 | 91短视频在线免费观看| 一级特黄录像视频免费| va天堂va亚洲va影视中文字幕| 亚洲无av在线中文字幕| 国产真人无遮挡作爱免费视频| 精品福利一区二区三区免费视频| 一区二区免费在线观看| 亚洲av永久无码| 亚洲av无码一区二区三区观看| 亚洲国产精品无码久久久秋霞2 | 亚洲区精品久久一区二区三区| 亚洲午夜久久久影院| 全黄性性激高免费视频| 成人毛片18女人毛片免费| 18级成人毛片免费观看| 国产午夜无码精品免费看| 免费观看四虎精品成人| 亚洲AV无码一区二区三区牲色| 亚洲国产美女精品久久久久| 亚洲国产美国国产综合一区二区| 国产亚洲美日韩AV中文字幕无码成人|