現在java web框架非常多,林林總總,讓很多人不知道選擇那個好: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 (現已發布1.5版本)
優點:不需要書寫XML配置文件良好的學習文檔社區成員很熱心缺點:社區比較小不如其他的項目活躍ActionBean裡面的URL是硬編碼的
Struts 2優點:架構簡單——易於擴展標記庫很容易利用FreeMarker或者Velocity來定制基於控制器或者基於頁面的導航缺點:文檔組織得很差對新特征過分關注通過Google搜索到的大多是Struts 1.x的文檔
Tapestry優點:一旦學會它,將極大地提高生產率HTML模板——對頁面設計師非常有利每出一個新版本,都會有大量的創新缺點:文檔過於概念性,不夠實用學習曲線陡峭發行周期長——每年都有較大的升級
Wicket優點:對Java開發者有利(不是Web開發者)
頁面和顯示綁定緊密社區活躍——有來自創建者的支持缺點:HTML模板和Java代碼緊挨著需要對OO有較好的理解Wicket邏輯——什麼都用Java搞定
就項目使用選擇而言,如果是穩健起見,structs是不錯的選擇;如果小項目,我更請傾向於Stripes,夠簡單、簡潔。
如果想用概念比較新的框架,可以選擇JSF、tapestry,它們都是基於組件的,重用性比較好。(當然開發者也要要設計得好)