没有合适的资源?快使用搜索试试~ 我知道了~
网上收集的WebWork深入浅出材料很不错
资源详情
资源评论
资源推荐
前言
本篇文章并没有太多 WebWork 的实战代码细节。本人非常希望能充当一
名导游的角色,带领读者逐步游览 WebWork 的功能特性和原理。在第一章,
我们将提出基于三层架构的 Web 层需要解决的 10 个问题,这是本文的纵轴。
围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork 简介、
WebWork 入门、WebWork 原理、WebWork 实战和技巧、展望 WebWork
未来、最后是本文的总结。
基于三层架构的
Web
层需要解决的问题
我们这里讨论的 Web 层,是基于典型的三层架构:Web 层,业务层,数据
层。故,我们将不讨论任何涉及业务(业务逻辑)层和数据层功能的实现。
Web 层需要解决的问题:
1、 数据的输入。如何获得基于无状态 HTTP 的请求数据?如何将请求的字
符数据转换为对应的模型对象?
2、 输入数据的验证。如何验证输入数据的合法性并给出明确的错误消息提
示 ?
3、 数据的输出。如何展现复杂的对象结构?如何处理复杂的展现逻辑?
4、 数据的传递和共享。如何在不同的请求或页面之间传递和共享数据?
5、 页面的流程管理。如何管理 Web 应用中的页面流程?
6、 模块化的管理。如何将复杂的 Web 应用以模块化的方式管理?
7、 灵活可扩展的架构。如何支持各种不同的展现层技术?如何与业务层或
数据层的各种框架整合?
8、 安全和访问控制的管理。如何提供基于 Web 的安全机制和资源访问控
制的管理?
9、 代码实现的简洁和高效。如何让开发步骤和代码维护变得简单?如何尽
量减少开发的中间环节?如何将公共的功能剥离出来,并可以灵活的组
装应用?
10、 其它问题。异步调用、国际化支持、文件上传、防止重复提交等等。
下面,让我们来一起看看 WebWork 是如何解决上面的这些问题。
WebWork
简介
WebWork 是由 OpenSymphony 组织开发的,致力于组件化和代码重用
的 J2EE Web 框架。WebWork 目前最新版本是 2.2.2,现在的 WebWork2.x
前身是 Rickard Oberg 开发的 WebWork,但现在 WebWork 已经被拆分成
了 Xwork1 和 WebWork2 两个项目,如下示意图所示:
work 简洁、灵活功能强大,它是一个标准的 Command 模式框架实现,并
且完全从 web 层脱离出来。Xwork 提供了很多核心功能:前端拦截机
(interceptor),运行时表单属性验证,类型转换,强大的表达式语言
(OGNL ?C the Object Graph Notation Language),IoC(Inversion
of Control 依赖倒转控制)容器等。
WebWork2 建立在 Xwork 之上,处理 HTTP 的请求和响应。所有的请求
都会被它的前端控制器(ServletDispatcher,最新版本是
FilterDispatcher)截获。前端控制器对请求的数据进行包装,初始化上下文
数据,根据配置文件查找请求 URL 对应的 Action 类,执行 Action,将执行结
果转发到相应的展现页面。WebWork2 支持多视图表示,视图部分可以使用
JSP, Velocity, FreeMarker, JasperReports,XML 等。
下面我们提到的 WebWork 将为 WebWork2,使用的版本是
WebWork2.2.2。
WebWork
入门
WebWork 安装
如果只是搭建一个 WebWork 开发环境,那将非常简单:
1、 去网站 http://www.opensymphony.com/webwork 下载最新的
WebWork2.2.2 项目。
2、 搭建一个 Web 应用(这个不难吧);并拷贝 WebWork 框架运行需要
的所有 Jar 文件到 Web 应用的 WEB-INF\lib 中。这些 Jar 文件,可以在
WebWork 项目中 lib\default 目录找到,即那个目录里面的所有文件。
当然,别忘记今天的“主角”,在 WebWork 跟目录下的 webwork-
2.2.2.jar 文件。
3、 在 Web.xml 文件中配置 WebWork 的前端控制器
FilterDispatcher,也就是一个普通的 Servlet Filter(过滤器)而已。
代码如下:
< filter >
< filter-name > webwork </ filter-name >
< filter-class >
com.opensymphony.webwork.dispatcher.FilterDispatcher
</ filter-class >
</ filter >
< filter-mapping >
< filter-name > webwork </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
不过如果是在实际项目中使用,安装过程中还是有一些问题需要注意的:
1、 关于前端控制器。在以前 WebWork2 版本里面,前端控制器是
ServeltDispatcher,它是一个 JavaServlet。而现在是一个 Filter(过
滤器),会导致无法在页面中使用 Jsp 的 include 来包含一个 WebWork
的 Action 请求的 URL。如果真的需要这样做,可以使用 WebWork 的
action 标签库。
2、 关于 Action 请求 URL 的后缀。我们知道,在一般的 Web 框架中,前
端控制器会将特定后缀的请求 URL 映射到对应的 Action 请求中。而我
们这里的前端控制器会接受任意的请求,但它默认是将.action 结尾的
URL 映射为 WebWork 的 Action 请求。我们可以在
webwork.properties 文件中,设置我们自己的后缀名,多个后缀名可
以用逗号隔开。例如:webwork.action.extension=action,do
3、 在 Jsp 页面中, WebWork 的标签库不需要在 web.xml 中定义,在页面中通过如
下的代码直接引用: <%@ taglib prefix = "ww" uri = "/webwork" %>
4、 在 Jsp 页面中,默认“altSyntax”是开启的。它是用来解决标签库中的
字符串和表达式语言混淆的问题。所以,作为变量的表达式语言应该放
在%{}中,否则 WebWork 会把它当作字符串处理。
5、 如果展现层技术使用 Freemarker(WebWork 官方的推荐,也是我个
人的推荐),如果在页面中需要使用标签库,必须在 web.xml 中配置
JspSupportServlet,代码如下:
< servlet >
< servlet-name > JspSupportServlet </ servlet-name >
< servlet-class >
com.opensymphony.webwork.views.JspSupportServlet
</ servlet-class >
< load-on-startup > 1 </ load-on-startup >
</ servlet >
6、 还有一些其它的定制,比如:编码,标签的模板文件等等,都可以在
webwork.properties 文件中配置。如果在 ClassPath 中没有这个文件,
WebWork 会自动读取 WebWork 的 Jar 包里面的 default.properties
文件。
WebWork 核心概念
WebWork 的三个关键部分
剩余16页未读,继续阅读
smangoo
- 粉丝: 1
- 资源: 55
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0