溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優(yōu)缺點(diǎn)是什么

發(fā)布時間:2022-01-04 10:51:07 來源:億速云 閱讀:140 作者:iii 欄目:編程語言

這篇文章主要介紹“JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優(yōu)缺點(diǎn)是什么”,在日常操作中,相信很多人在JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優(yōu)缺點(diǎn)是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優(yōu)缺點(diǎn)是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

JSF
優(yōu)點(diǎn):
◆Java EE標(biāo)準(zhǔn),這意味著有很大的市場需求和更多的工作機(jī)會
◆上手快速并且相對容易
◆有大量可用的組件庫
缺點(diǎn):
◆大量的JSP標(biāo)簽
◆對REST和安全支持不好
◆沒有一個統(tǒng)一的實(shí)現(xiàn)。既有SUN的實(shí)現(xiàn),又有Apache的實(shí)現(xiàn)——MyFaces。
◆國內(nèi)的OperaMasks還支持AJAX,以及有開發(fā)工具支持

Spring MVC
優(yōu)點(diǎn):
◆對覆蓋綁定(overriding binding)、驗(yàn)證(validation)等提供生命周期管理
◆與許多表示層技術(shù)/框架無縫集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等
◆便于測試——?dú)w功于IoC
缺點(diǎn):
◆大量的XML配置文件
◆太過靈活——沒有公共的父控制器
◆沒有內(nèi)置的Ajax支持

Stripes
優(yōu)點(diǎn):
◆不需要書寫XML配置文件
◆良好的學(xué)習(xí)文檔
◆社區(qū)成員很熱心
缺點(diǎn):
◆社區(qū)比較小
◆不如其他的項(xiàng)目活躍
◆ActionBean里面的URL是硬編碼的

Struts 2
優(yōu)點(diǎn):
◆架構(gòu)簡單——易于擴(kuò)展
◆標(biāo)記庫很容易利用FreeMarker或者Velocity來定制
◆基于控制器或者基于頁面的導(dǎo)航
缺點(diǎn):
◆文檔組織得很差
◆對新特征過分關(guān)注
◆通過Google搜索到的大多是Struts 1.x的文檔

Tapestry
優(yōu)點(diǎn):
◆一旦學(xué)會它,將極大地提高生產(chǎn)率
◆HTML模板——對頁面設(shè)計(jì)師非常有利
◆每出一個新版本,都會有大量的創(chuàng)新
缺點(diǎn):
◆文檔過于概念性,不夠?qū)嵱?br/>◆學(xué)習(xí)曲線陡峭
◆發(fā)行周期長——每年都有較大的升級

Wicket
優(yōu)點(diǎn):
◆對Java開發(fā)者有利(不是Web開發(fā)者)
◆頁面和顯示綁定緊密
◆社區(qū)活躍——有來自創(chuàng)建者的支持
缺點(diǎn):
◆HTML模板和Java代碼緊挨著
◆需要對OO有較好的理解
◆Wicket邏輯——什么都用Java搞定

接著,Matt通過采訪這些框架的作者,與他們討論各種開源的Java Web框架,并且突出各個框架的長處、聽取框架作者對其他框架的看法,希望借此了解這些框架的未來發(fā)展方向。

下列是一些被采訪者:
JSF:Jacob Hookom
RIFE:Geert Bevin
Seam:Gavin King
Spring MVC:Rob Harrop
Spring Web Flow:Rob Harrop and Keith Donald
Stripes:Tim Fennell
Struts 1:Don Brown
Tapestry:Howard Lewis Ship
Trails:Chris Nelson
Struts 2:Patrick Lightbody
Wicket:Eelco Hillenius

Matt對采訪做了如下總結(jié):
JSF:
如果你想讓web應(yīng)用具有類似桌面程序的功能性,那么JSF的標(biāo)準(zhǔn)規(guī)范和大量第三方組件庫的支持值得你 信賴。
Spring MVC:
綜合了許多不同的技術(shù),這使得它可以被廣泛地應(yīng)用到不同類型的項(xiàng)目中去;它可以被當(dāng)作web應(yīng)用開發(fā)的一個基礎(chǔ)平臺。
Stripes:
可以被應(yīng)用到存在大量復(fù)雜數(shù)據(jù)交互的程序中;有強(qiáng)大的類型轉(zhuǎn)換、綁定和驗(yàn)證功能;可以使管理大的復(fù)雜表單以及直接映射它們到域?qū)ο笞兊煤唵巍?br/>Tapestry:
在中到大型項(xiàng)目中,表現(xiàn)突出(當(dāng)然,你也可以只把它應(yīng)用到單個頁面上),在這些項(xiàng)目中,你可以通過簡單地創(chuàng)建新的組件起到杠桿作用。
Struts 2:
通常更適合于那些希望可以真正開始做事并且愿意花費(fèi)大量時間來學(xué)習(xí)他們使用的開源工具的小項(xiàng)目組。Struts 2的目標(biāo)不是那些更喜歡拖放式開發(fā)的“扶手椅程序員”。
Wicket:
非常適合于這樣的內(nèi)/外部網(wǎng)應(yīng)用:UI很復(fù)雜并且你希望可以充分利用你的開發(fā)者資源。

上面的總結(jié),基本是突出了各個框架的長處。然而,哪些又是他們不好的地方呢?
Matt提出了評價一個框架好壞與否的標(biāo)準(zhǔn):
◆Ajax支持
是不是內(nèi)置了?是否便于使用?
◆書簽?zāi)芰?/em>
用戶能否將某個頁面收藏起來并且可以方便地返回到該頁面?
驗(yàn)證
使用是否簡單?是否支持客戶端(JavaScript)驗(yàn)證?
◆可測試性
脫離容器測試控制器,是否足夠簡單?
◆提交和重定向
框架如何處理重復(fù)提交問題?
◆國際化
如何支持國際化?控制器利用國際化信息,是否容易?
◆頁面修飾
框架支持哪種類型的頁面修飾/組成機(jī)制?
◆社區(qū)和技術(shù)支持
提出問題,能否被快速地、恭敬地回答?
◆開發(fā)工具
是否有支持這個框架的好的工具,尤其是IDE?
◆市場需求
學(xué)習(xí)了這個框架,它能否幫你找到份工作?
◆崗位數(shù)量
在dice.com和indeed.com上,對這個框架技能的需求如何?

筆者認(rèn)為這個評價標(biāo)準(zhǔn),值得大家借鑒。

然后,Matt按照這些評價標(biāo)準(zhǔn),對各個框架做了以下闡述:
Ajax支持
◆JSF:沒有內(nèi)置的Ajax支持,需要使用ICEfaces和Ajax4JSF
◆Stripes:沒有對應(yīng)的類庫,支持流輸出
◆Struts 2:內(nèi)置Dojo,有用于GWT和JSON的插件
◆Spring MVC:沒有對應(yīng)的類庫,需要使用DWR和Spring MVC擴(kuò)展
◆Tapestry:Tapestry 4.1中,有內(nèi)置的Dojo
◆Wicket:有Dojo和Script.aculo.us支持

書簽?zāi)芰?br/>◆JSF:可以任意提交——URL甚至不被考慮
◆Stripes:使用約定,但是你可以不加理會
◆Struts 2:有命名空間的概念,這使得收藏某個頁面并返回變得容易
◆Spring MVC:允許完全的URL控制
◆Tapestry:依然存在一些丑陋的URL
◆Wicket:允許裝配(mount)頁面/URL

驗(yàn)證
◆JSF:默認(rèn)的國際化信息丑陋,但是配置簡單
◆Stripes和Wicket:用Java類進(jìn)行驗(yàn)證——不支持客戶端驗(yàn)證
◆Struts 2:使用OGNL完成強(qiáng)大的表達(dá)式驗(yàn)證功能;只有在Action上指定了規(guī)則,才支持客戶端驗(yàn)證。
◆Spring MVC:允許你使用公共驗(yàn)證器——這是一種成熟的解決方案
◆Tapestry:有健壯的驗(yàn)證功能——不需自定義就有漂亮的國際化信息

可測試性
◆Spring MVC和Struts 2:允許利用mocks(例如EasyMock、jMock和Spring Mocks)簡單地進(jìn)行測試
◆Tapestry:測試?yán)щy,因?yàn)轫撁骖惐怀橄?、具體類被簡化
◆JSF:頁面類可以方便地被測試,實(shí)際上很像Struts 2 中的actions
◆Wicket:有WicketTester——一個強(qiáng)大的解決方案
◆Stripes:有Servlet API Mocks和MockRoundtrip

提交和重定向
解決重復(fù)提交問題的最簡單方法是:在提交后重定向
◆Spring MVC:允許你將參數(shù)加到重定向URL上
◆Stripes、Tapestry和Wicket:有“flash式”的支持
◆Struts 2:需要一個自定義的解決方案
◆JSF:需要一個自定義的解決方案,國際化信息很難加入到頁面bean中

國際化
◆JSTL的標(biāo)簽使國際化變得簡單;如何將國際化信息放到控制器類中,還沒有一個統(tǒng)一的標(biāo)準(zhǔn)。
◆Stripes、Spring MVC和JSF:每個地區(qū)使用一個資源綁定文件
◆Struts 2、Tapestry和Wicket:提倡把每個頁面/action用到的資源文件分開
◆JSF:需要在每個頁面上定義資源綁定信息
◆Tapestry:標(biāo)簽比較可怕

頁面修飾
◆Tiles能夠用于Struts 2、Spring MVC和JSF中;需要對每個頁面進(jìn)行配置。
◆SiteMesh能夠用于所有的這些框架中(不推薦在JSF、Tapestry或者Wicket中使用);在設(shè)置完成后, 只需要很少的維護(hù)。

開發(fā)工具
◆Spring MVC:Spring IDE,但是只做XML校驗(yàn),不是一個UI/web工具
◆Struts 2:Eclipse
◆Tapestry:Spindle,對編碼者非常有利
◆JSF:眾多IDE支持,并且做得越來越好
◆Stripes和Wicket:沒有任何官方工具
◆NetBeans目前支持Struts *、JSF(+Facelets)、Tapestry和Wicket,尚不支持Stripes和Spring MVC


市場需求
◆Struts 1:需求依然很大并且被廣泛使用
◆Spring MVC:越來越受關(guān)注,但大部分是因?yàn)镾pring框架的一些其他特征
◆JSF:很快地變得流行起來
◆Struts 2:正在獲得地盤,但是相關(guān)的工作機(jī)會很少
◆Tapestry:在過去的數(shù)年里,受歡迎程度不斷增加
◆Wicket和Stripes:還是未知數(shù)

到此,關(guān)于“JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優(yōu)缺點(diǎn)是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI