您好,登錄后才能下訂單哦!
這篇文章主要介紹“JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優缺點是什么”,在日常操作中,相信很多人在JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優缺點是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優缺點是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
JSF
優點:
◆Java EE標準,這意味著有很大的市場需求和更多的工作機會
◆上手快速并且相對容易
◆有大量可用的組件庫
缺點:
◆大量的JSP標簽
◆對REST和安全支持不好
◆沒有一個統一的實現。既有SUN的實現,又有Apache的實現——MyFaces。
◆國內的OperaMasks還支持AJAX,以及有開發工具支持
Spring MVC
優點:
◆對覆蓋綁定(overriding binding)、驗證(validation)等提供生命周期管理
◆與許多表示層技術/框架無縫集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等
◆便于測試——歸功于IoC
缺點:
◆大量的XML配置文件
◆太過靈活——沒有公共的父控制器
◆沒有內置的Ajax支持
Stripes
優點:
◆不需要書寫XML配置文件
◆良好的學習文檔
◆社區成員很熱心
缺點:
◆社區比較小
◆不如其他的項目活躍
◆ActionBean里面的URL是硬編碼的
Struts 2
優點:
◆架構簡單——易于擴展
◆標記庫很容易利用FreeMarker或者Velocity來定制
◆基于控制器或者基于頁面的導航
缺點:
◆文檔組織得很差
◆對新特征過分關注
◆通過Google搜索到的大多是Struts 1.x的文檔
Tapestry
優點:
◆一旦學會它,將極大地提高生產率
◆HTML模板——對頁面設計師非常有利
◆每出一個新版本,都會有大量的創新
缺點:
◆文檔過于概念性,不夠實用
◆學習曲線陡峭
◆發行周期長——每年都有較大的升級
Wicket
優點:
◆對Java開發者有利(不是Web開發者)
◆頁面和顯示綁定緊密
◆社區活躍——有來自創建者的支持
缺點:
◆HTML模板和Java代碼緊挨著
◆需要對OO有較好的理解
◆Wicket邏輯——什么都用Java搞定
接著,Matt通過采訪這些框架的作者,與他們討論各種開源的Java Web框架,并且突出各個框架的長處、聽取框架作者對其他框架的看法,希望借此了解這些框架的未來發展方向。
下列是一些被采訪者:
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對采訪做了如下總結:
JSF:
如果你想讓web應用具有類似桌面程序的功能性,那么JSF的標準規范和大量第三方組件庫的支持值得你 信賴。
Spring MVC:
綜合了許多不同的技術,這使得它可以被廣泛地應用到不同類型的項目中去;它可以被當作web應用開發的一個基礎平臺。
Stripes:
可以被應用到存在大量復雜數據交互的程序中;有強大的類型轉換、綁定和驗證功能;可以使管理大的復雜表單以及直接映射它們到域對象變得簡單……
Tapestry:
在中到大型項目中,表現突出(當然,你也可以只把它應用到單個頁面上),在這些項目中,你可以通過簡單地創建新的組件起到杠桿作用。
Struts 2:
通常更適合于那些希望可以真正開始做事并且愿意花費大量時間來學習他們使用的開源工具的小項目組。Struts 2的目標不是那些更喜歡拖放式開發的“扶手椅程序員”。
Wicket:
非常適合于這樣的內/外部網應用:UI很復雜并且你希望可以充分利用你的開發者資源。
上面的總結,基本是突出了各個框架的長處。然而,哪些又是他們不好的地方呢?
Matt提出了評價一個框架好壞與否的標準:
◆Ajax支持
是不是內置了?是否便于使用?
◆書簽能力
用戶能否將某個頁面收藏起來并且可以方便地返回到該頁面?
驗證
使用是否簡單?是否支持客戶端(JavaScript)驗證?
◆可測試性
脫離容器測試控制器,是否足夠簡單?
◆提交和重定向
框架如何處理重復提交問題?
◆國際化
如何支持國際化?控制器利用國際化信息,是否容易?
◆頁面修飾
框架支持哪種類型的頁面修飾/組成機制?
◆社區和技術支持
提出問題,能否被快速地、恭敬地回答?
◆開發工具
是否有支持這個框架的好的工具,尤其是IDE?
◆市場需求
學習了這個框架,它能否幫你找到份工作?
◆崗位數量
在dice.com和indeed.com上,對這個框架技能的需求如何?
筆者認為這個評價標準,值得大家借鑒。
然后,Matt按照這些評價標準,對各個框架做了以下闡述:
Ajax支持
◆JSF:沒有內置的Ajax支持,需要使用ICEfaces和Ajax4JSF
◆Stripes:沒有對應的類庫,支持流輸出
◆Struts 2:內置Dojo,有用于GWT和JSON的插件
◆Spring MVC:沒有對應的類庫,需要使用DWR和Spring MVC擴展
◆Tapestry:Tapestry 4.1中,有內置的Dojo
◆Wicket:有Dojo和Script.aculo.us支持
書簽能力
◆JSF:可以任意提交——URL甚至不被考慮
◆Stripes:使用約定,但是你可以不加理會
◆Struts 2:有命名空間的概念,這使得收藏某個頁面并返回變得容易
◆Spring MVC:允許完全的URL控制
◆Tapestry:依然存在一些丑陋的URL
◆Wicket:允許裝配(mount)頁面/URL
驗證
◆JSF:默認的國際化信息丑陋,但是配置簡單
◆Stripes和Wicket:用Java類進行驗證——不支持客戶端驗證
◆Struts 2:使用OGNL完成強大的表達式驗證功能;只有在Action上指定了規則,才支持客戶端驗證。
◆Spring MVC:允許你使用公共驗證器——這是一種成熟的解決方案
◆Tapestry:有健壯的驗證功能——不需自定義就有漂亮的國際化信息
可測試性
◆Spring MVC和Struts 2:允許利用mocks(例如EasyMock、jMock和Spring Mocks)簡單地進行測試
◆Tapestry:測試困難,因為頁面類被抽象、具體類被簡化
◆JSF:頁面類可以方便地被測試,實際上很像Struts 2 中的actions
◆Wicket:有WicketTester——一個強大的解決方案
◆Stripes:有Servlet API Mocks和MockRoundtrip
提交和重定向
解決重復提交問題的最簡單方法是:在提交后重定向
◆Spring MVC:允許你將參數加到重定向URL上
◆Stripes、Tapestry和Wicket:有“flash式”的支持
◆Struts 2:需要一個自定義的解決方案
◆JSF:需要一個自定義的解決方案,國際化信息很難加入到頁面bean中
國際化
◆JSTL的
◆Stripes、Spring MVC和JSF:每個地區使用一個資源綁定文件
◆Struts 2、Tapestry和Wicket:提倡把每個頁面/action用到的資源文件分開
◆JSF:需要在每個頁面上定義資源綁定信息
◆Tapestry:標簽比較可怕
頁面修飾
◆Tiles能夠用于Struts 2、Spring MVC和JSF中;需要對每個頁面進行配置。
◆SiteMesh能夠用于所有的這些框架中(不推薦在JSF、Tapestry或者Wicket中使用);在設置完成后, 只需要很少的維護。
開發工具
◆Spring MVC:Spring IDE,但是只做XML校驗,不是一個UI/web工具
◆Struts 2:Eclipse
◆Tapestry:Spindle,對編碼者非常有利
◆JSF:眾多IDE支持,并且做得越來越好
◆Stripes和Wicket:沒有任何官方工具
◆NetBeans目前支持Struts *、JSF(+Facelets)、Tapestry和Wicket,尚不支持Stripes和Spring MVC
市場需求
◆Struts 1:需求依然很大并且被廣泛使用
◆Spring MVC:越來越受關注,但大部分是因為Spring框架的一些其他特征
◆JSF:很快地變得流行起來
◆Struts 2:正在獲得地盤,但是相關的工作機會很少
◆Tapestry:在過去的數年里,受歡迎程度不斷增加
◆Wicket和Stripes:還是未知數
到此,關于“JSF/Spring MVC/Stripes/Struts 2/Tapestry/Wicket的優缺點是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。