WebWork简介

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框架核心概念与实战教程 本文还有配套的精品资源,点击获取 简介:WebWork是一个基于Java的轻量级Web应用框架,提供了强大的MVC架构支持,简化了复杂Web应用程序的开发流程。本教程深入探讨了WebWork的多个关键概念,包括MVC架构、Action类和ActionSupport、配置文件的使用、拦截器、结果类型、表单数据绑定、异常处理及国际化和本地化处理。通过详细分析源码示例,教程帮助开... 阅读详情

相关推荐

解决Calibre中license的错误

本次解决了Calibre在Cadence 617 virtuoso版本中运行不了的错误,在遇到问题的时候,我也跟你们一样,首先是上网查询为什么运行不了呢?明明我安装了之后里面有Calibre的,我当时也是这样的疑惑,一点Calibre运行LVS的时候,一片空白,然后就出现了license的错误,后来点点点,看看看,搜搜搜,最终解决了这个问题。虚拟机是VMware16版本,cadence617,Calibre是2015版本。旨在记录遇到的实际问题。

yytu231的博客 1万+

对webwork的理解与使用

js采用的是单线程模型,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力相对的webwork就是为js创造多线程的环境,允许主线程创建webwork线程,将未处理的一些任务分给后者 运行.在js主线程运行的同时,work线程在后台运行,两者互不打扰,等到webwork线程的任务结束后,把结果返回给主线程。

weixin_68531033的博客 5751

RoboMaster机甲大师赛备赛:如何用STM32+CAN总线精准控制四个大疆3508电机?

本文详细介绍了在RoboMaster机甲大师赛中,如何利用STM32和CAN总线技术精准控制四台大疆3508电机。从硬件架构设计、多电机ID分配、数据解析到同步控制算法,全面解析了构建高响应、低延迟底盘驱动系统的关键技术,助力参赛队伍提升机器人运动性能。

weixin_28684825的博客 134

Web Work在项目中的使用

Web Worker是HTML5提供的一个API,可以在浏览器后台线程中执行JavaScript脚本,使浏览器UI线程不受阻塞,提高了网页的响应速度。本文介绍了Web Worker的使用方法和在项目中的应用,给出了两个示例说明。在实际开发中,我们应该合理利用Web Worker,提高网页的响应速度,优化用户的体验。

weixin_53058848的博客 704

【STM32CubeIDE入门】(一)工程创建&工程配置

​写在前面:如果是刚接触stm32cubeide的同学推荐与这一篇文章共同阅读,能够更加快速认识上手stm32cubeide。 1、打开stm32cubeide,选择好工作目录进入主界面后,点击创建工程。

涛涛子的博客 1万+

GEE:连续变化检测 CCDC 提取断点信息(干扰时间、干扰幅度、干扰次数)

本文将介绍在 Google Earth Engine (GEE) 平台上连续变化检测与分类(Continuous Change Detection and Classification, CCDC)提取扰动时间、干扰幅度、干扰次数信息,并下载到本地的代码。

养乐多的博客 1946

告别页面卡顿:Web Worker 助你解决前端性能瓶颈

Web Worker 是 HTML5 引入的一项新技术,允许开发者在浏览器的主线程之外创建一个独立的线程来执行 JavaScript 代码。这样,耗时的任务可以在后台线程中异步执行,而不会阻塞主线程的操作,比如页面的渲染和用户的交互。Web Worker 通过让 JavaScript 代码在独立线程中执行,解决了前端开发中复杂任务阻塞 UI 的问题,极大提升了网页的流畅度和用户体验。它适用于大数据处理、复杂算法、文件处理等场景,是现代前端开发者不可忽视的性能优化工具之一。

Caleb的博客 877

13、数据可视化与分组操作:Danfo.js 实战指南

本文深入介绍了如何使用 Danfo.js 进行数据可视化与分组操作。内容涵盖多种图表的创建与配置,如折线图、散点图、箱线图、小提琴图、直方图和柱状图,并结合 Plotly.js 实现丰富的交互式可视化效果。同时,详细讲解了数据聚合的‘分割-应用-组合’模式,包括分组数据、遍历分组、apply 方法及 agg 聚合操作,帮助开发者高效处理和分析结构化数据。适用于 Dnotebook、HTML 及主流前端框架的应用场景。

o1p2q3r的博客 99

WebWork 简介

WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出...

www.v5qq.com的技术博客 252

学习STM32的DS18B20温度传感器

该函数首先复位传感器,然后发送跳过ROM命令和转换命令,并等待转换完成。接下来,它再次复位传感器,发送跳过ROM命令和读取温度命令。最后,它读取温度值的最低字节和最高字节,并将其组合成16位温度值。传感器的VCC引脚连接到STM32的3.3V电源,GND引脚连接到GND,而数据引脚连接到任何一个IO引脚。需要注意的是,示例代码中使用了一个简单的延时函数来等待转换完成。实际上,您可能需要使用定时器或其他更精确的延时方法来实现更准确的延时。下面是一个示例代码,演示如何读取DS18B20传感器的温度值。

m0_75244442的博客 1182

图解移动机器人中的运动规划(Motion Planning),附几十种规划算法

运动规划是移动机器人的核心理论和工程技术之一,本文作为教程先导,解析了运动规划的两大组件——路径规划和轨迹规划。欢迎感兴趣的同学订阅专栏!

FRIGIDWINTER的博客 4万+

WebWork标签库简介

  WebWork标签库分为七大类:通用标签: 最常用, 最基本的标签; 组件化标签: 鼓励视图的组件化; 流程控制标签: 在JSP页面中管理控制流程; 迭代标签: 迭代元素并操作可迭代(iterable)的对象; UI标签: 生成HTML表单字段和控件; VUI标签: 在WebWork2.0版本之后,VUI 标签已经从WebWork里移除.因为它们在4年中基本

阳光下的立人 688

【深度学习】什么是交叉注意力机制?

输入序列:自注意力机制在同一个输入序列内建立注意力,交叉注意力机制在不同的输入序列间建立注意力。应用场景:自注意力机制多用于单一模态的任务(如纯文本任务),交叉注意力机制多用于多模态任务(如图像和文本的结合)。计算过程:自注意力机制的查询、键和值都来自同一个输入序列,而交叉注意力机制的查询来自一个输入序列,键和值来自另一个输入序列。

q742971636的博客 7372

[Webwork]标签简介

Webwork标签的三条规则:1、所有String类型的属性值都会解析 %{...} 中间的字符;2、所有非字符串类型的属性值都不会解析,而是直接当作一个OGNL表达式求值;3、对于第2条规则的例外情况处理是:如果非字符串类型的属性值以 %{ 开始,并以 } 结束,则在对表达式求值之前这些字符会被截取出来。一、通用标签1. <ww:property value="Obj...

weixin_34306593的博客 211

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[Webwork]标签简介(转载)

Webwork标签的三条规则: 1、所有String类型的属性值都会解析 %{...} 中间的字符; 2、所有非字符串类型的属性值都不会解析,而是直接当作一个OGNL表达式求值; 3、对于第2条规则的例外情况处理是:如果非字符串类型的属性值以 %{ 开始,并以 } 结束,则在对表达式求值之前这些字符会被截取出来。 一、通用标签 1. 用于获取结果属性的值,如果value未给定,将...

weichao202的专栏 378

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

webwork标签库简介

WebWork标签库分为七大类:通用标签: 最常用, 最基本的标签; 组件化标签: 鼓励视图的组件化; 流程控制标签: 在JSP页面中管理控制流程; 迭代标签: 迭代元素并操作可迭代(iterable)的对象; UI标签: 生成HTML表单字段和控件; VUI标签: 在WebWork2.0版本之后,VUI 标签已经从WebWork里移除.因为它们在4年中基本没有被使用过; 国际化支持标签: 提供国...

初秋土豆的博客 163

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

struts1,WebWork以及struts2的简介和对比

Struts 1简介及存在的问题 从过去的岁月来看,Struts 1是所有MVC框架中不容辩驳的胜利者,不管是市场占有率,还是所拥有的开发人群,Struts 1都拥有其他MVC框架不可比拟的优势。Struts 1的成功得益于它丰富的文档、活跃的开发群体。当然,Struts 1是世界上第一个发布的MVC框架:Struts 1.0在2001年6月发布,这一点可能是使它得到如此广泛拥戴的主要原因。 ...

龙塘湾 181

【转】struts1,WebWork以及struts2的简介和对比

Struts 1简介及存在的问题 从过去的岁月来看,Struts 1是所有MVC框架中不容辩驳的胜利者,不管是市场占有率,还是所拥有的开发人群,Struts 1都拥有其他MVC框架不可比拟的优势。Struts 1的成功得益于它丰富的文档、活跃的开发群体。当然,Struts 1是世界上第一个发布的MVC框架:Struts 1.0在2001年6月发布,这一点可能是使它得到如此广泛拥戴的主要原因。 为了

y270506355的专栏 1038

什么是WebWork?

 http://www.blogjava.net/liuwentao253/archive/2006/08/21/64867.html WebWork是JAVA的框架,它是MVC的.

王军辉的专栏 1054

webwork总结

http://blog.youkuaiyun.com/taijianyu/article/details/2260990  webwork 总结链接 http://www.blogjava.net/baoyaer/articles/189331.html   spring 的OpenSessionInViewFilter简介

xiangyunxue的专栏 417

WebWork深入浅出

原文链接地址:http://www.blogjava.net/moxie/archive/2006/10/20/76375.html 前言 本篇文章并没有太多WebWork 的实战代码细节。本人非常希望能充当一名导游的角色,带领读者逐步游览WebWork的功能特性和原理。在第一章,我们将提出基于三层架构的Web层需要解决的10个问题,这是本文的纵轴。围绕着纵轴,我们按照横轴的顺序逐步描述讲解:

李晓娜 1万+

Webwork2

 webwork.properties           Webwork属性配置文件。Webwork有个缺省的属性配置文件default.properties,在webwork.jar文件中,你可以建立一个webwork.properties      文件重新设置相关属性,相同属性的设置webwork.properties将覆盖default.properties的设置。下面是个default

能想多远,就能走多远 1372
上一篇: 利用cxf开发WebService
下一篇: JBoss,Geronimo还是Tomcat
rancii
博客等级 码龄19年 15粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值