http://daihaixiang.blog.163.com/blog/static/3830134200711411515336/

WebWork2和Spring MVC Framework的比较

(1)基本使用

Spring MVC Framework与Spring的其它部分一起使用自然能够很好的融合,不需要额外的工具包和配置

WebWork2和Spring集成需要webwork2-spring.jar做连接器,并要做相当步骤的配置,不过还算简单

(2)控制器

Spring MVC Framework的控制器要实现Controller接口,其处理核心是handleRequest(表单交互是onSubmit)方法,主要任务是构造Model数据返回给视图显示

WebWork2的控制器要扩展ActionSupport类(Action接口的缺省实现),其处理核心是execute方法,由于视图需要的Model数据都是以Action属性的形式存在,其主要任务是设置这些属性的值

(3)显示视图内容

Spring MVC Framework只提供绑定表单域元素的taglibs,视图内容显示功能则由JSTL完成

WebWork2需要使用自己提供的taglibs显示视图内容,才能很好的利用它的特性,因此不需要JSTL

(4)资源束访问

Spring MVC Framework提供通用的方法:指定(集中)存放资源束的属性文件,并能和JSTL的<fmt:message>很好的结合使用

WebWork2使用Action类名或其父类名对应的属性文件存放资源束;资源束可以分散到各Action类名对应的属性文件中,也可以集中到父类名对应的属性文件中,用<ww:text>访问

(5)表单交互

Spring MVC Framework使用Command对象(POJO)封装表单交互传递的数据,并使用taglibs绑定Command对象的属性到表单域元素,来读取和设置表单域元素的值,有些复杂

WebWork2将Action属性和表单域元素自然绑定,比较简洁明了,但是其验证失败后错误信息的处理没有Spring MVC Framework简洁

(6)数据有效性验证

Spring MVC Framework需要自己编写验证器,并且验证规则和实现逻辑混合在一起,不利于重用

WebWork2提供比较灵活的验证机制:首先是将验证规则和实现逻辑分离,便于重用;其次是WebWork2和XWork提供了常用的验证器,不需要再自己写了;此外,验证规则用XML文件保存,修改验证规则只要修改XML文件,不需要修改代码;最后,如果没有适合的验证器,也可以自己扩展定制验证器,写一次就可以重复利用

(7)个人观点

本人认为使用WebWork2来实现Web应用层更好些,虽然需要做一些额外的配置,但是WebWork2有它的一些优势,如前面讲的表单交互的简洁性,数据验证的规则和实现分离,另外还有集成的OGNL特性,Velocity技术等。

注:Spring也支持Velocity等多种web层框架,没有进行深入的研究,可以自己去看看,比较一下。

WebWork2和Spring MVC Framework的比较的更多相关文章

  1. Spring MVC Framework 注解

    ControllerAdvice Spring MVC Framework会把 @ControllerAdvice注解内部使用 @ExceptionHandler.@InitBinder.@Model ...

  2. Spring MVC Framework 实例

    一 SpringMVC基础入门,创建一个HelloWorld程序 1 首先,导入SpringMVC需要的jar包. commons-logging-<version>.jar spring ...

  3. Intellij IDEA采用Maven+Spring MVC+Hibernate的架构搭建一个java web项目

    原文:Java web 项目搭建 Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring ...

  4. spring mvc 介绍

    Spring MVC Tutorial tag. * * If you do not want to deal with the intricities of the noscript * secti ...

  5. No mapping found for HTTP request with URI [/HelloWeb/] in DispatcherServlet with name 'HelloWeb' Spring MVC

    I'm learning the Spring Framework, and I'm doing the HelloWeb tutorial on tutorialspoint, and I can' ...

  6. Spring MVC Cookie example

    In this post we will see how to access and modify http cookies of a webpage in Spring MVC framework. ...

  7. Spring MVC Hello World Example(转)

    Spring 3 You may interest at this Spring 3 MVC hello world example. In Spring MVC web application, i ...

  8. Spring MVC - 静态页面

    环境搭建 以下示例显示如何使用Spring MVC Framework编写一个简单的基于Web的应用程序,它可以使用<mvc:resources>标记访问静态页面和动态页面.首先使用Int ...

  9. 【64】Spring mvc详解

    Spring mvc框架 Spring web MVC 框架提供了模型-视图-控制的体系结构和可以用来开发灵活.松散耦合的 web 应用程序的组件.MVC 模式导致了应用程序的不同方面(输入逻辑.业务 ...

随机推荐

  1. STL总结之functor

    STL中仿函数是重要的组成部分.所谓的仿函数就是通过重载括号运算符实现的, 如下: STL库中都是泛型仿函数如小于操作: STL中定义了许多有用的操作,如less(小于), less_equal(小于 ...

  2. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...

  3. [Buffalo]ASP.NET MVC路由映射

    Asp.Net的路由系统旨在通过注册URl模版与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但对于Asp.Net Mvc应用来说,请求的目标却是定义在某个Controller类型中的Act ...

  4. .Net 程序的运行

    1. 用.Net开发的程序运行的某台机器上必须安装.Net FrameWork 2. .Net FrameWork向下兼容的实现 在安装4.0的时候,会把3.5,2.0等低版本的都装上,从而实现向下兼 ...

  5. C++之内部类(嵌套类)与外部类及友元

    本人能力.精力有限,所言所感都基于自身的实践和有限的阅读.查阅,如有错误,欢迎拍砖,敬请赐教——博客园:钱智慧. 先上代码: class Outer { public: Outer(){m_outer ...

  6. 转(NLP必读)

    如果你刚接触自然语言处理并对她感兴趣,最好读几本这方面的书籍,除了能让你知道自然语言处理各个领域是干什么的外,还能培养一下NLP的感觉.以下四本书是我读研期间阅读和接触过的,如果您还有好书推荐,欢迎补 ...

  7. 如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.2.0.jar

    如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.2.0.jar http://cxshun.iteye.com/blog/1876366 大数据是当今的一个热门话 ...

  8. 【荐】Redis学习资料汇总

    Redis学习手册(目录) - Stephen_Liu - 博客园 Redis 命令参考 — Redis 命令参考 Redis_php 学习 - 简单--生活 - 博客园

  9. iOS Xcode的快捷键

    将一些搜集和经常使用的快捷键记录下来,方便你我. Command +1~ 8: 跳转到导航区的不同位置 Command +0 :显示/隐藏导航区 Command Alt 1~ 6:在不同检测器之间跳转 ...

  10. C++中模板使用详解

    转自:http://www.360doc.com/content/09/0403/17/799_3011262.shtml 1. 模板的概念. 我们已经学过重载(Overloading),对重载函数而 ...