黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

選擇JSF不選Struts的十大理由

系統(tǒng) 1995 0

我的一個客戶不知道該選用Struts還是JSF。就像你預(yù)料的那樣,我通常會問:這2中框架之間有什么區(qū)別?當(dāng)然,除了我的這個客戶外很多人都面臨這樣的選擇。

總的來說,我建議在新項目中優(yōu)先考慮JSF。雖然常常有一些商業(yè)上的因素迫使我們?yōu)楝F(xiàn)有的項目選擇了Struts,而且那些解決方案還有待考驗,但是,讓我們面對一個事實:JSF比Struts好多了。

下面是我選擇JSF而不選Struts的十大理由:

1.Components(組件)

2.RenderKits

3.Renderers

4.ValueBindingExpressions(值綁定表達式)

5.EventModel(事件模型)

6.Extensibility(可擴展性)

7.ManagedBeans(DependencyInjection依賴注入)

8.POJOActionMethods

9.JSFisthestandardJava-basedwebappframework(JSF是javaweb應(yīng)用程序的標(biāo)準(zhǔn)框架)

10.There'sonlyoneStruts(只有一個Struts)

10.There'sonlyoneStruts(只有一個Struts)

Struts是一個開源產(chǎn)品,然而JSF是一個標(biāo)準(zhǔn)。這個細節(jié)常常被新的JSF學(xué)習(xí)者忽略,其實這是顯而易見的,因為我們有多個JSF的實現(xiàn)。雖然JSF還很不成熟,但是我們已經(jīng)有了2個優(yōu)秀的JSF實現(xiàn)可以選擇:Sun的參考實現(xiàn)和Apache的MyFaces。另一方面,我們只有一個Struts。

9.JSFisthestandard(JSF是標(biāo)準(zhǔn))

JEE5.0要提供一個JSF的實現(xiàn),這表明JSF不久將會無處不在。這可能與你無關(guān),但是和工具供應(yīng)商密切相關(guān)。現(xiàn)在大概有50個javaweb應(yīng)用程序框架,工具供應(yīng)商不會情愿去支持一個特別的框架,但是他們會毫不猶豫的去支持一個標(biāo)準(zhǔn)。而且不止供應(yīng)商,開源項目也會迅速的聚集在JSF的四周,爭先恐后的去實現(xiàn)相同的功能。比如說,直到我們?nèi)崿F(xiàn)本質(zhì)上和Shale的Tapestry差不多的視圖的時候,我才知道Facalets。(從長遠來看,我相信這種冗余是件好事,會給我們帶來好處)

8.POJOActionMethods

Struts的行為是和Struts的API綁定在一起的,但是JSF的行為方法可以在POJPO中實現(xiàn)。這意味著你不用在表單和模型對象之間實現(xiàn)一個多余的行為層。順便說一下,在JSF里面沒有行為對象,行為在模型對象中實現(xiàn)。但是也請注意一點:如果你愿意你也可以生成與JSF獨立的行為對象。在Struts里面,你有FormBean和ActionBean。FormBean包含數(shù)據(jù)而ActionBean包含邏輯。OO狂會想去合并前2者,在Struts你辦不到。但是在JSF中,你可以分開數(shù)據(jù)和邏輯,也可以合并到一個對象中,一切由你決定。

7.ManagedBeans(DependencyInjection依賴注入)

和Spring一樣,JSF也使用了依賴注入(DJ)(或控制反轉(zhuǎn)(IoC))去實例化和初始化Bean。Struts的確為你生成了FormBean和ActionBean,但是JSF可以為你生成各種各樣的ManagedBean。

6.Extensibility(可擴展性)

這個很重要。JSF有6個對象實現(xiàn)了這個框架的大部分功能,而且你可以很容易的用你自己的實現(xiàn)代替原有實現(xiàn)。比如你想加一個自定義參數(shù)在JSF表達式語言里面,或是添加一個自己的視圖控制器以便于區(qū)分組件和HTML。事實上Shale實現(xiàn)了上面的功能。如果你還沒有滿足,JSF提供了幾個地方你可以輕松的控制JSF的生命周期。Shale給你的會更多。

5.EventModel(事件模型)

JSF的事件模型使你可以對值改變,動作,JSF生命周期階段變換等作出反應(yīng)。在JSF1.1中,那些事件都是在服務(wù)器端處理的,這肯定是一個缺陷,好在JSF2.0計劃支持客戶端事件,拭目以待吧。

4.ValueBindingExpressions(值綁定表達式)

在Struts中,你負責(zé)把數(shù)據(jù)從Form傳遞到模型對象。你實現(xiàn)的Action的execute方法是把Form作為一個參數(shù)。然后你再手動的把數(shù)據(jù)從FormBean里面取出放到模型對象里面。你要為應(yīng)用里面的每個Form做這些事情,然而在JSF里面,你只需像這樣:#{model.property}就夠了,其他的交給JSF來處理。

3.Renderers

你有看過Struts的標(biāo)簽的源代碼嗎?它直接生成HTML。JSF組件標(biāo)簽什么都不生成,它和服務(wù)器上的一對component-renderer對應(yīng)。Component維護組件狀態(tài),rendered負責(zé)獲得視圖。重點是renderers是可插拔的,即你可以根據(jù)自己需求實現(xiàn)然后替代掉默認實現(xiàn)。比如說我在NFJS上面的Felix談話中舉例說明了怎么去實現(xiàn)一個自定義的labelrenderer。你只需要配置你的renderer,JSF就會自動在你的應(yīng)用程序里面使用他。

2.RenderKits

在幾年前我曾經(jīng)有份Struts咨詢工作,我們必須同時支持瀏覽器和無線設(shè)備,非常痛苦。但是用JSF來完成那個任務(wù)非常容易,因為你可以生成你自己的renderkit-為一種特定顯示技術(shù)的renderers的集合-然后配置到JSF里面。

1.Components(組件)

組件是Struts和JSF之間最大的區(qū)別。就像Swing一樣,JSF提供豐富的底層構(gòu)件去開發(fā)組件然后添加到標(biāo)準(zhǔn)的組件集。那些底層構(gòu)件讓你很容易的生成自己的組件并且和別人共享。現(xiàn)在我們到處都能看到自定義組件跳出來,比如說Oracle的ADF和MyFaces,兩者都提供了豐富的組件集,就像javascript日歷,tree等等。當(dāng)然,組件只是一部分。典型的是,組件都和一個獨立的renderer對應(yīng),這給我們帶來了真正的好處(看第3條)。但是和JSF中的很多東西一樣,你不一定要墨守成規(guī)。只要你愿意,你可以實現(xiàn)render自己的組件,雖然這樣你會失去給組件加入別的renderer的能力。

有很多只能意會不能言傳啊,比如Renderer等。翻譯得不好,大家可以去看看原文。原文出自DavidGeary'sBlog,原文地址為:http://jroller.com/comments/dgeary/Weblog/

來源: http://blog.csdn.net/cqluojia/services/trackbacks/ gigi_miao

<!-- page -->

選擇JSF不選Struts的十大理由


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論