空間站

          北極心空

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

            比較2: java編程模型(Java Programming Model)

            在前面我們提到Tapestry和JSF都允許表現(xiàn)層的模板直接和一個(gè)Java類中的屬性和方法進(jìn)行交互,那這些類的實(shí)例在運(yùn)行時(shí)是怎么創(chuàng)建和管理的呢?

            Tapestry
            Tapestry的一個(gè)完整過程通常都要包括三個(gè)部分:用于顯示的頁面模板(一般就是html),帶有相關(guān)屬性和方法的java類,用于定義頁面模板上的控制元素和java類的關(guān)系的頁面定義文件。Tapestry有著一套特殊的訪問HttpSess ion、ServletContext的體系。
            在一個(gè)頁面定義文件中描述所有的數(shù)據(jù)綁定是可以的,但是一個(gè)頁面控制元素卻不能在request周期內(nèi),綁定一個(gè)java類。在request周期內(nèi)只能通過一個(gè)page類訪問一些屬性和方法。這其中最主要的限制就是關(guān)于page類的問題,一個(gè)pag e類必須是BasePage或者AbstractPage的派生類。從另一方面來說,這就意味著你所編寫的表現(xiàn)層邏輯的代碼將會(huì)和框架本身的實(shí)現(xiàn)有著非常緊密的耦合。不過,Tapestry未來的版本就會(huì)減少這種耦合,努力成為一個(gè)松耦合的編程模型。

            JSF
            在JSF應(yīng)用中沒有頁面定義文件。它只有一個(gè)全局的配置文件,命名為:faces-config.xml,里面通常都定義了一堆"managed beans"。這些managed beans都是帶有屬性和事件監(jiān)聽器的定義良好的java bean。在faces-config.xml中定義的后端bean都有三個(gè)參數(shù):一個(gè)標(biāo)識(shí)符、一個(gè)java類名、一個(gè)bean的生存周期,生存周期可以是request、session、application中的一種。一旦在 faces-config.xml中定義好了一個(gè)managed bean,那一個(gè)前端頁面上的顯示控制元素就可以使用標(biāo)識(shí)符來關(guān)聯(lián)這個(gè)bean。managed bean也可以配置為引用另外一個(gè)managed bean。

            JSF和Tapestry都可以方便的與其他的中間層技術(shù)整合,比如Spring。JSF managed bean facility是一個(gè)IoC(Inversion of Control)。通過諸如 JSF-Spring 這樣的擴(kuò)展技術(shù),我們可以方便將其和Spring很好的整合在一起,使得JSF的表達(dá)式可以調(diào)用Spring的bean的方法。雖然Spring可以與 Tapestry3.0整合,但是在Tapestry4.0當(dāng)中才能更好的充分發(fā)揮IoC特性;Tape stry的領(lǐng)導(dǎo)Howard Lewis Ship已經(jīng)在Tapestry啟動(dòng)了IoC框架的工作。Spring的bean將會(huì)很輕松的注入到Tapestry應(yīng)用的類中。

            JSF的編程模型提供了更大的靈活型,因?yàn)槟憧梢酝ㄟ^組合的方式來豐富你的代碼功能。比如,你可以設(shè)定一個(gè)指定的managed bean完成頁面的某些功能,同時(shí),你也可以在這些bean里引用其他的managed bena,從而可在頁面間共享一些功能。

          而Tapestry必須使用類繼承的方法,也就是說,Tapestry應(yīng)用中的一個(gè)頁面類必須從框架指定的基類中派生(包含一大堆框架指定的狀態(tài)),這并不是一個(gè)理想的方法。

          JSF能夠非常直觀的管理session和application周期內(nèi)的狀態(tài): 頁面代碼可以方便的訪問managed bean,而不管其生命周期是request、session還是application。而Tapestry在這方面就相對(duì)差點(diǎn),不過, Tapestry4.0在這方面做了很大的改進(jìn),引入了類似于JSF managed bean的技術(shù),同時(shí),還支持Java 5.0的annotaions技術(shù),減少對(duì)XML配置文件的依賴,從而降低應(yīng)用配置的復(fù)雜性。

             JSF在編程模型上來看,與Tapestry相比具有更大的靈活性。

          posted on 2006-12-08 19:33 蘆葦 閱讀(250) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 新邵县| 尚义县| 海宁市| 富裕县| 霍林郭勒市| 东山县| 大厂| 江永县| 忻州市| 玉环县| 措美县| 纳雍县| 龙里县| 县级市| 白玉县| 蕲春县| 安化县| 东阳市| 怀化市| 瑞昌市| 唐海县| 怀柔区| 台山市| 远安县| 临漳县| 自治县| 密云县| 天门市| 鄂尔多斯市| 焉耆| 沐川县| 海淀区| 临湘市| 陇南市| 宜兴市| 邹平县| 姚安县| 顺平县| 巴林右旗| 长垣县| 监利县|