Spring、struts、webwork2三者MVC的比較

http://blog.sina.com.cn/s/blog_4a69fa43010005il.htmlhtml

在web應用方面,Spring有獨立的MVC實現,與struts和webwork2相比絕不遜色。java

struts缺點是比較重,頁面(V)上要有form要用標籤,form(M)要繼承ActionForm這麼個東東,控制類(C)繼承Action/DispatchAction。
webwork2比struts要輕,頁面沒什麼說的主要就是標籤,model層也不要強制繼承什麼,控制類仍是要實現一些webwork2的接口Action/ModelDriven。
Spring和webwork2輕重至關。頁面標籤用jstl,model也不用繼承什麼,控制類繼承MultiActionController/SimpleFormController。
struts和webwork2都有本身的標籤庫,都很強大。不過偶更傾向Spring的選擇--JSTL,JSTL是標準的標籤庫,優勢嘛,標準就是優勢:)
web

在頁面輸入數據綁定上,struts用的是ActionForm的自動綁定,webwork2是modeldriven的getModel()綁定,Spring的是在controller中聲明command對象。
這裏strus是最重的,頁面要用標籤,要繼承ActionForm,action要對應到form,要有pojo;而webwork2和Spring相對輕一點,webwork2的action要實現ModelDriven接口,Spring要在SimpleFormController的聲明中配置一個 command對象(或者在代碼中顯式調用setCommandClass()),而後再有pojo,二者實現代價應該說差很少。
編程

在實現輸入驗證上struts在form(M)上作文章要繼承ValidateForm,webwork2/Spring都在action上作文章。
其中Spring比較特殊,它是編程式的驗證;而struts/webwork2都是配置式的驗證,在這一點上更傾向struts/webwork2。
即便出現struts/webwork2常規預約義驗證不能處理的狀況,也能夠本身寫一些驗證規則,並且事實上也寫過,固然不多要本身動手寫規則:)。
又想起一點來,struts寫規則寫的是validate-rules.xml文件,而webwork2寫的是java類,前者方便後者習慣,選擇哪一個框架就對哪一個框架下手,沒什麼說的。
app

這裏有一點應該提出來,要用輸入驗證,頁面上必須用標籤綁定輸入項,這一點三者是同樣的。框架

在國際化上,三者實現相似。post

配置文件方面,Spring、struts、webwork2都差很少,難度至關。
Spring 通常還要多寫一個application.xml來維護DP;struts要多寫一個validate-forms.xml(好像是這個文件名,老了,忘了:(),全部要驗證的頁面均可以在這個文件裏配置;webwork2則比較麻煩,要對全部要驗證的頁面,都寫一個對應action的action- validation.xml文件。
spa

其實偶一直認爲MVC其中的model部分是比較難辦的,若是model層完成所有的業務,就會僅爲了MVC而忽略業務部分的分層合理化。
Spring、struts、webwork2三者的MVC都很好的實現了V和C兩層,model層的實現相對來講就不那麼清晰明確,業務是複雜的自己就應該分層實現。
上面把ValueObject一層劃爲model其實頗爲牽強。
orm

Spring是強大完備的,這從僅僅它的MVC部分就能和struts/webwork2相媲美就能看出來。xml

說明:「輕」或「重」指的是實現代價實現成本的大小。

相關文章
相關標籤/搜索