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

在web应用方面,Spring有独立的MVC实现,与struts和webwork2相比毫不逊色。

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是标准的标签库,优点嘛,标准就是优点:)

在页面输入数据绑定上,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类,前者方便后者习惯,选择哪个框架就对哪个框架下手,没什么说的。

这里有一点应该提出来,要用输入验证,页面上必须用标签绑定输入项,这一点三者是一样的。

在国际化上,三者实现类似。

配置文件方面,Spring、struts、webwork2都差不多,难度相当。

Spring 一般还要多写一个application.xml来维护DP;struts要多写一个validate-forms.xml(好像是这个文件名,老了,忘了:(),所有要验证的页面都可以在这个文件里配置;webwork2则比较麻烦,要对所有要验证的页面,都写一个对应action的action- validation.xml文件。

其实偶一直认为MVC其中的model部分是比较难办的,如果model层完成全部的业务,就会仅为了MVC而忽略业务部分的分层合理化。

Spring、struts、webwork2三者的MVC都很好的实现了V和C两层,model层的实现相对来说就不那么清晰明确,业务是复杂的本身就应该分层实现。

上面把ValueObject一层划为model其实颇为牵强。

Spring是强大完备的,这从仅仅它的MVC部分就能和struts/webwork2相媲美就能看出来。

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

Spring、struts、webwork2三者MVC的比较的更多相关文章

  1. Spring+Struts+Hibernate 简介(转)

    http://blog.csdn.net/slnqnd/article/details/1772910/ Struts2.0 +Hibernate 3.2 +Spring 2.0 一.         ...

  2. Spring+Struts集成(第二种方案)

    在上一篇文章中我们了解到了第一种Spring跟Struts集成的方案,但此集成方案的不足是WEB层中知道Spring的相关内容,因为需要去主动的查找对象:BeanFactory.方案二便是通过依赖注入 ...

  3. 概述struts,以及struts如何实现MVC架构的

    概述MVC体系结构? 答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式. 在MVC体系中,模型通常被称为”业务逻辑”,是真 ...

  4. 自己动手写Spring框架--IOC、MVC

    对于一名Java开发人员,我相信没有人不知道 Spring 框架,而且也能够轻松就说出 Spring 的特性-- IOC.MVC.AOP.ORM(batis). 下面我想简单介绍一下我写的轻量级的 S ...

  5. Spring Boot 2.X(四):Spring Boot 自定义 Web MVC 配置

    0.准备 Spring Boot 不仅提供了相当简单使用的自动配置功能,而且开放了非常自由灵活的配置类.Spring MVC 为我们提供了 WebMvcConfigurationSupport 类和一 ...

  6. 为什么使用spring Struts 等框架开发

    转载自:http://www.cnblogs.com/sharpxiajun/p/3936268.html 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入, ...

  7. SSM整合案例(Spring+Struts+Mybatis)

    项目目录结构 第一步:创建数据库和数据表 CREATE DATABASE IF NOT EXISTS mybatis; USE mybatis; CREATE TABLE t_user ( ) NOT ...

  8. Spring+Struts+Mybatis+Shiro整合配置

    Jar包

  9. java web - 为什么要使用spring struts

    1.软件里有很多优秀的框架,有一种类型的框架,它的特点是建立在一个现有技术的基础上,提供和现有技术一样业务功能的技术框架,这个新的技术框架比原技术更加易用,更加健壮同时功能更加强大,例如:jQuery ...

随机推荐

  1. 分享你最喜欢的技巧和提示(Xcode,Objective-C,Swift,C...等等)

    http://www.cocoachina.com/ios/20151231/14846.html 笔者分享总结如下(本篇会不定期进行更新) : Objective-C 1.让Xcode的控制台支持L ...

  2. 【转】Optiplex 7010驱动下载链接(XP&Windows7

    原文网址:http://zh.community.dell.com/support_forums/desktops/f/236/t/2606 x 7010驱动下载链接(XP&Windows7) ...

  3. c# 提取word文件中的图片问题

    最近遇到一个项目就是要从一份word中提取出所有的图片信息,功能看起来不是很难,只要使用office自带的Microsoft.Office.Interop.Word就可以解决问题.网上也有不少的文章来 ...

  4. Android What is Application

    本文转自:http://www.cnblogs.com/elleniou/archive/2012/05/16/2502661.html Application和Activity,Service一样是 ...

  5. diamond专题(四)—— 容灾机制

    大家好,本次为大家带来diamond的容灾机制. diamond之所以表现的稳定可靠,除了架构简单之外,另一个重要原因是diamond具有一套完备的容灾机制,容灾机制涉及到client和server两 ...

  6. CodeForces - 445A - DZY Loves Chessboard解题报告

    对于这题本人刚开始的时候觉得应该用DFS来解决实现这个问题,但由于本人对于DFS并不是太熟,所以就放弃了这个想法: 但又想了想要按照这个要求实现问题则必须是黑白相间,然后把是字符是'B'或'W'改为' ...

  7. makefile 中 $@ $^ %< 使用

    这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在L ...

  8. Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题

    PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 ...

  9. NOIP2015 运输计划(二分+LCA+差分)

    4326: NOIP2015 运输计划 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 308  Solved: 208[Submit][Status] ...

  10. makefile for VCS from Syn@psys

    已调试通过 未来将修改成verdi的FSDB版本 下载后把 Makefile_VCS.txt 修改为 Makefile 就可以使用 链接地址: http://files.cnblogs.com/all ...