WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上 Web 应用程序的设计开发是复杂并且费时的。然而,你能够通过运用一种框架处理常见的Web应用程序来简化开发流程。许多开源Web应用框架能够做到这一点甚至更好一些。这些开发框架中最好的一个就是WebWork,是开源项目中OpenSymphony组的一个Web应用开发框架。 WebWork的最大优点是它的简单性和灵活性。WebWork有一个很小的API,它使开发者可以迅速进行开发工作。WebWork是许多特性和适用性的组合,包括使用variour view技术,例如JavaServer Pages(JSP),Velocity,Extensible Stylesheet Language Transformations Specification(XSLT)和JasperReporters。WebWork拥有一个活跃的社区,有许多文章、开发者和用户。 WebWork是建立在称为XWork的Command模式框架之上的强大的基于Web的MVC框架。 WebWork2的特性包括 灵活的Validation框架 允许你在XML文件中定义验证内容,在运行时通过Interceptor自动应用,因此完全脱离Action类。新版支持客户端验证。 Type conversion 允许你在类之间很容易转换对象。 OGNL(Object Graphical Navigation Language)表达式语言: 允许动态对象图表遍历和方法执行,使用ValueStack透明访问多Beans的属性。WW2也具有使用JSTL的能力。 IoC(Inversion of Control)容器 管理组件的生命周期,使客户获得组件实例不需要创建注册类(与容器环境无关)。 Velocity Templates 使UI组件可重用,从而允许开发者容易定制Web页面的look & feel。 Interceptors 在Actions处理的前后动态拦截,以简单化Action代码,增加减少代码的机会。 支持I18N。 容易和第三方软件集成 包括Hibernate, Spring, Pico, Sitemesh等。 支持多种视图技术 如JSP,Velocity,FreeMarker,JasperReports,XML等。 支持Packages和Namespaces,来管理Actions。
webwork
采用更加松耦合的设计,系统的action和servlet API不在耦合,使单元测试更方便,允许系统从B/S结构向C/S结构转换
webwork支持更多的表现层技术,如velocity,freemarker和xslt等
webwork可以脱离web应用使用,webwork有自己的控制反转(Inversion of Control)容器,通过控制反转,能让测试更简单
从处理流程上来看,webwork与struts1很相似,核心都是控制器组成:
1)核心控制器ServletDispatcher,由框架提供
2)业务逻辑控制器Action,由程序员提供 相对于struts1,webwork优点
1)action无需与Servlet API耦合,更容易测试
2)action无需与webwork耦合,代码重用率高
仅仅实现webwork的action接口,包含了一个execute方法。 3)支持更多的表现层技术,有更好的适应性