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

说明:“轻”或“重”指的是实现代价实现成本的大小。

相关文章
相关标签/搜索