WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.2.7,现在的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这两个框架的基础之上.【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
WebWork架构
XWork是一个命令行模式框架,它是WebWork的基础。WebWork在XWork之上添加了一个MVC的Web应用框架。XWork的核心概念包括 Action、Interceptor、Result。WebWork扩展了这些概念的基础实现,用于支持对 Web 应用的开发。
[编辑]Action
WebWork的核心功能是 Action, Action实现了命名模式中的命令对象。
所有 Action 都实现了 com.opensymphony.xwork.Action 接口,该接口只有一个方法:
public String execute() throws Exception
com.opensymphony.xwork.ActionSupport 类实现了 Action 及其其他可选接口,可以作为其他自定义 Action 类的基类。
[编辑]Interceptor
Interceptor可以封装围绕Action执行的代码。包括设置Action属性属性等核心功能在内的大量WebWork特性是以Interceptor方式实现的。WebWork从AOP借鉴了很多拦截器的概念,但两者最大的区别是WebWork不需要任何预处理过程,也不需要修改生成的二进制代码。因为拦截是框架的内部机制,Action调用者及被调用的Action被有效地分隔
[编辑]Result
com.opensymphony.xwork.Result 接口代表 Action 执行后的结果,它只有一个方法
public void execute(ActionInvocation invocation) throws Exception
Result可用于生成 action 执行完毕后需要输出结果,如 Servlet转发、Servlet重定向、Velocity、FreeMaker、JasperReports(PDF, CSV, XML等)、XSLT渲染、ActionChainResult(可用于从当前动作到其他动作的链式处理)
[编辑]OGNL
堆栈是驱动 XWork 和 WebWork 动态上下文的中心,这个堆栈保存了与 Action 运行相关的众多对象,它通过解析表达式动态获取属性值,会从堆栈的头开始包含该属性名称的第一个对象。堆栈建立在OGNL之上
OGNL 能够通过计算表达式定位 JavaBean的属性。
http://www.opensymphony.com/ognl
[编辑]ActionProxy/ActionInvocation
框架把Action执行以ActionProxy/ActionInvocation序对方式封装起来,以便添加核心服务。
ActionProxy是客户端代码执行 Action 的句柄,因为使用代理而不是直接操作对象本身,所以可以在代理中封装 Interceptor, Result 等的额外代码。
ActionProxy实例是ServletDispatcher使用静态ActionProxyFactory实例创建的。ServletDispatcher映射HTTP请求得到一个名字空间和动作别名。动作别名被ActionProxyFactory用于创建正确的ActionProxy。然后 ServletDispatcher 执行 ActionProxy,而 ActionProxy控制着Interceptor, Action和Result的执行.
[编辑]ActionContext
ActionContext 实际上是 ThreadLocal Map
在Action执行期间,Action、Interceptor和Result能访问一个ThreadLocal存储空间: ActionContext, 由ActionProxy管理,并且仅在执行ActionProxy.execute()方法时有效
[编辑]ServletDispatcher
ServletDispatcher是连接WebWork各个部分的胶水,ServletDispatcher通过设置包装了应用域、会话域和参数域属性的 java.util.Map 实现来创建执行动作的上下文环境。随即用 ActinProxyFactory创建ActionProxy, ServletDispatcher执行ActionProxy。ActionProxy 的执行过程包括执行所有相关 Interceptor、Action 本身,根据 Action 返回码找到对应 Result。
[编辑]基本特色
A flexible Validation framework allowing you to decouple validation rules from your action code.
Type Conversion allowing you to easily convert objects from one class to another, solving one of the most tedious efforts when creating web apps.
A powerful Expression Language based on OGNL allowing dynamic object graph traversal and method execution and transparent access to properties from multiple beans using a ValueStack. Webwork also has the ability to use JSTL.
Inversion of Control integration that manages component lifecycle and dependencies without the need to build registry classes that clients must call to obtain a component instance. WebWork recommends Spring for IoC.
Reusable Tags that allow for easy and reusable component-oriented web development using Themes and Templates
Advanced Interceptors that provide for various rich functionality, including preventing multiple form submissions and executing long running queries in the background.
Hierarchical and pluggable support for Internationalization.
Easy integration with third party software including Hibernate, Spring, Sitemesh, and JSTL.
Support for many view technologies such as JSP, FreeMarker, and JasperReports.
Modular Configuration Files using packages and namespaces to manage hundreds of actions.
Advanced AJAX features provided by the ajax theme.
[编辑]HelloWorld
HellowWorld.java
package com.acme.action;
import com.opensymphony.xwork.ActionSupport;
public class HelloWorld extends ActionSupport {
private String message;
public String execute() {
message = "Hello World!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
index.jsp
<%@page contentType="text/html"%>
<%@taglib prefix="ww" uri="/webwork"%>
<%@page pageEncoding="UTF-8"%>
<html><body>
<ww:property value="message"/>
</body></html>
xwork.xml
<action name="HelloWorld" class="com.acme.action.HelloWorld">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/HelloWebWork"/>
run example
http://localhost:8084/HelloWebWork/HelloWorld.action
More Detail: http://www.netbeans.org/kb/55/quickstart-webwork-in-netbeans.html
分享到:
相关推荐
在WebWork简介.htm和WebWork简介.files中,你可能会找到更多关于WebWork的具体用法、示例代码以及配置信息,这些都能帮助你更好地理解和使用WebWork。总的来说,WebWork作为一款优秀的Web开发框架,它的设计理念和...
webwork in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World
一、WebWork简介 WebWork由Apache软件基金会维护,其设计理念是通过减少样板代码和提供强大的数据绑定功能来提高开发效率。WebWork的主要特点包括:动作映射、拦截器、类型转换、异常处理和国际化支持等。 二、...
#### 一、WebWork简介 **WebWork** 是一款基于Java的开源Web应用框架,它提供了一种简洁的方式来构建复杂的Web应用程序。该框架的主要优点包括易于集成、灵活的数据处理机制以及强大的插件系统。《WebWork in ...
#### 一、WebWork简介与下载 在开始介绍WebWork的搭建之前,我们先简要了解一下WebWork框架。WebWork是一个开源的Java Web应用框架,它提供了一种灵活的方式来处理HTTP请求,并将这些请求映射到Java对象的方法上。...
**WebWork简介** WebWork的核心组成部分包括Xwork和WebWork2。Xwork提供拦截器、表单验证、类型转换、OGNL表达式语言和IoC容器等功能。WebWork2基于Xwork,负责处理HTTP请求和响应,使用ServletDispatcher(在最新...
1. WebWork简介: WebWork是Apache Struts 2的前身,它提供了一种更灵活和强大的方式来管理Web应用中的业务逻辑、视图和控制层。WebWork的核心设计目标是简化Java Web开发,提高代码的可维护性和可测试性。 2. MVC...
**WebWork简介** WebWork是由OpenSymphony团队开发的一个轻量级Web应用框架,它在早期版本中提供了与Struts类似的功能,但后来演进为更现代化的框架,比如现在的Struts 2,两者有着密切的关系。WebWork强调代码的...
一、WebWork简介 WebWork是Apache软件基金会下的一个项目,最初由John Rose和Jason Carreira共同创建,后来演进为Struts2。它的设计目标是提供一种更加灵活、可扩展和易于调试的MVC框架,相比传统的Servlet和JSP,...
一、WebWork简介 WebWork由Joe Walnes和JediBeers于2003年发起,旨在提供一种更优雅、更灵活的替代STRUTS1.x的解决方案。WebWork的核心理念是通过Action和Interceptor机制来处理HTTP请求,并通过强大的数据绑定和...
#### 一、WebWork简介 **WebWork**是由OpenSymphony组织开发的一款基于MVC模式的J2EE Web框架,旨在促进组件化和代码重用。WebWork当前最新版本为2.1,其前身是Rickard Oberg开发的WebWork框架。随着发展,WebWork...
### 第一部分:WebWork简介 #### 1. WebWork框架概览 - **核心概念**:介绍WebWork框架的基本概念,包括动作(Action)、拦截器(Interceptor)等。 - **架构设计**:阐述WebWork的内部架构,包括组件之间的交互...
1. **WebWork简介**:介绍WebWork的起源、设计理念以及在Java Web开发中的角色。 2. **环境搭建**:指导读者如何配置开发环境,包括安装必要的工具、设置项目结构等。 3. **第一个WebWork应用**:通过一个简单的...
#### WebWork简介 - **背景**:WebWork是由OpenSymphony组织开发的一款专注于组件化和代码重用的MVC(Model-View-Controller)模式J2EE Web框架。 - **特点**: - 组件化设计,易于维护和扩展。 - 代码重用,减少...
#### 二、Struts与WebWork简介 1. **Struts**: - Struts是一个开源的MVC框架,它最早出现于2000年左右。 - 使用Struts构建的应用程序通常遵循一个固定的请求响应流程:客户端发送请求至控制器(ActionServlet)...
本篇文章并没有太多WebWork 的实战代码细节。本人非常希望能充当一...围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork简介、WebWork入门、WebWork原理、WebWork实战和技巧、展望WebWork未来、最后是本文的总结。
Webwork 使用简介 Webwork 是一个基于网络的微积分习题系统,它旨在利用信息科技的辅助,强化微积分作业的功能。Webwork 是世界上唯一一套有填充题题型(答案甚至可以为文字符号形式,不一定为数字型式)的微积分...
#### 一、WebWork框架简介 **WebWork**是一个开源的Java Web应用程序框架,它的设计理念是简化Web应用的开发过程,提高开发效率。随着时间的发展,WebWork逐渐演变成了**Struts2**框架的核心部分。本文档主要介绍了...
1.2.2 WebWork简介12 1.2.3 Struts 2起源15 1.3 Struts 2体系介绍16 1.3.1 Struts 2框架架构16 1.3.2 Struts 2的配置文件17 1.3.3 Strut 2的标签库18 1.3.4 Struts 2的控制器组件19 1.4 Struts 2与...