成都麦柯 技术开发二部
一, 简介
使用“开发指南”这个名词,实在是惭愧。随着接触面的增广,随着各种技术的不断了
解,才逐渐发现自己欠缺得更多。书读得越多,才发觉自己的知识越匮乏。半年前,非常
自不量力地将自己对 Tapestry3.0.x 的实践总结出来,写了一个所谓的《Tapestry 开发指南》,
而现在 Tapestry4 发布,我觉得将这个所谓的“开发指南”更新到 Tapestry4,对自己来说,更
像是一种交代。有很多不足之处,希望朋友们能够不遗余力地指出,就是对我最大的支持。
Tapestry4 的雏形是 Tapestry3.1,Tapestry 的作者 Howard,不光开发了 Tapestry,还同
时开发了一个轻量级框架 Hivemind。所以 Tapestry3.1 的开发一开始就处于 Hivemind 框架
之下。后来由于种种原因,Howard 没有将 Tapestry3.1 从 Hivemind 中剥离出来,于是就成
为了今天的 Tapestry4.0。
很多朋友都不是很认同 Hivemind,认为 Hivemind 是与 Spring 类似的 IoC 框架。刚开
始的时候,我也同样很不认同 Hivemind,毕竟使用 Spring 很熟悉了。而且我们团队的整个
技术架构已经日趋成熟。就如同我当初评价 Tapestry4 与 Hivemind 之间的融合:“除非有足
够且必要的理由,不然别说让我去说服团队将 Spring 转型为 Hivemind,就连我自己都说服
不了自己。”
随着对 Tapestry4 的深入,我开始理解为什么 Howard 没有将 Tapestry 从 Hivemind 中剥
离。就团队而言,我依然不认为有必要说服团队转型。但是就我个人而言,仅仅在 IoC 和
DI 的使用上,我却觉得使用 Hivemind 比 Spring 简单。当然,简单并非最重要的理由,但
是当我们处于某一个特殊条件下,或许使用 Hivemind 也不失一个值得参考的选择。另外,
最重要的是,如果着眼于 Tapestry 本身,Hivemind 就好比是一个良好的地基,Tapestry 作
为上层建筑,任何我们认为不合理,不适合自己特殊需要的 Tapestry 官方实现,都可以通
过 Hivemind 的 IoC 及 DI 进行重构。
于是,现在的 Tapestry4 变得非常有趣,首先,它本身是一个框架,可以使用 Tapestry4
来创建动态,灵活的 web 应用程序,另外,可以通过 Hivemind 对 Tapestry4 自身功能进行
重构,以便实现任何我们希望达到的特殊功能。打个比方说:Tapestry4 就好比一把起子,
我们可以通过 Hivemind 对这把起子的起子头进行任意更换,这样我们就可以适应任何形状
或者接口的螺丝。在后面,我们会看到令人兴奋的示例来介绍这种“换起子头”的思想。
关于 Tapestry4.0 的理论知识,如果有兴趣,可以参看我以前写的,关于 Tapestry3.0 的
开发指南。实际上,虽然版本升级了,使用方式也有了很大变化,但是 Tapestry 本质的思
想和理论并没有变化。这就是为什么虽然 Tapestry4.0 才刚刚发布,我却可以比别人更快地
熟 悉 Tapestry4.0 的 使 用 。 对 于理 论 的 介 绍 , 这 里 就 不 在 累述 了 。 记 得 我 以 前 学 习
Tapestry3.0 的时候,还是通过查询 Tapestry2.4 的理论资料来学习的。对于本文档,我希望
定位在快速熟悉 Tapestry4.0。凡是我在本文档中提到的组件,如果没有做特别解释,那么
就表示其用法与 T3 中基本相同,而对于 T3 的组件,我在以前些的文档中已经介绍了绝大
部分。所以如果你是新手,建议你先参看我以前写的文档( http://forum.cdmcs.com/update/
Tapestry
开发指南
0.9.rar )。
二, Quick Start
现在 Tapestry4 已经发布 beta-9 版本,从其 change log 上,我们可以看到,Tapestry4 的
开发已经日趋成熟,基本上官方现在修改最多的都已经仅仅是文档。所以,我现在已经在
使用 Tapestry4 来开发项目。
为了配合这篇 user guide,我写了一个 quick start 示例。我们可以一步一步从项目配置
开始,逐步了解 Tapestry4。
成都麦柯系统集成有限公司 www.cdmcs.com
2
成都麦柯 技术开发二部
1) 搭建环境
我们需要如下东东:
Eclipse3.1 及其以上版本:http://www.eclipse.org/downloads/index.php
MyEclipse4.0 及其以上版本:http://www.myeclipseide.com
Java SE 5.0 及其以上版本:http://www.sun.com/download/index.jsp
Resin3.0.x:http://www.caucho.com/download/index.xtp
Tapestry4.0 包:http://jakarta.apache.org/site/downloads/downloads_tapestry.cgi
Tapestry4.0 支持包:http://jakarta.apache.org/tapestry/dependencies.html
OK,现在我们开始搭建 Tapestry 项目。对于 Eclipse 的配置,我们就略过了。
使用 MyEclipse 新建一个 Web Project:
我们将项目名称命名为 MyTapestry4:
成都麦柯系统集成有限公司 www.cdmcs.com
3