`
summerkai
  • 浏览: 94317 次
  • 性别: Icon_minigender_2
  • 来自: 农村
社区版块
存档分类
最新评论

了解 Tapestry【转】

 
阅读更多
在这篇由两部分构成的文章的前一部分中,作者兼 developerWorks 的热心贡献者 Brett McLaughlin 对 Tapestry 进行介绍,从它的安装一直到文件结构。您可以看到 Tapestry 怎样帮助使用 HTML 和模板标记进行基于 servlet 的 Web 应用程序开发。

如果想出售产品,那么拥有在线设施是很重要的,不论是运作一家数百万美元的公司,还是只是想在假日处理几千个线手镯。在某些情况下,修补一些 Web 页面,并采用一些像 PayPal 或 eBay 这样的预先打包好的支持系统处理销售事务,也可以做得足够好。但是一个全面的、设计良好的 Web 应用程序应当能把在线销售从小打小闹提升到专业的、动态的在线商店的层次。每个人都知道,消费者在商店中买的东西比从跳蚤市场买的东西多。

问题在于,在进入大多数 Web 开发框架时 —— 特别是在使用 Java™ 作为编程语言的时候 —— 会发现复杂性太高。Struts、JSF 和 Spring 都是优秀的 Web 开发框架,但是它们中没有一个是适合胆小的人。(如果您曾经试着向新 Java 开发人员解释控制反转,您就会知道我谈的是什么了!)幸运的是,还有更容易的选择。

Tapestry 是在 Apache 软件许可下发布的一个开放源码的、基于 Java 的框架,它是专门为了简化 Web 开发设计的。它有以下关键特性:

  • 易于安装:不需要是 Web 应用程序高手,就可以让 Tapestry 启动并运行。

  • 易于使用:只需要基本的 Java 和 HTML(是的,确实是 HTML,而不是 servlet)技能就可以编写 Tapestry 应用程序。

  • 易于扩大规模。当站点增长超过 10、50 或 100 个页面时,也不必抛弃 Tapestry。对于多数 Web 应用程序来说,Tapestry 都足够健壮。   

在这篇文章中(系列的前半部分),我会带您入 Tapestry 的世界。我将带您一起经历下载和安装这个框架的每一步,然后运行一些示例应用程序,让您理解它的工作方式。在下一篇文章中,我将介绍更高级的示例,让您更好地掌握 Tapestry 的核心框架。在了解核心框架之前,您将完全适应了 Tapestry 环境。

简化的安装

您很快就会了解到 Tapestry 的口号是简单。这种简单不代表原始 或不成熟,而是代表易于理解易用 和直观。因为安装是任何一项新技术的入门,所以毫不夸张地说,安装 Tapestry 非常容易。对于入门者来说,只有很少的前提要求,而这些要求对于 Web 开发人员来说,都是相当标准的,所以它们可能已经安装了。(如果没有,那么请参阅 参考资料 一节获得技术下载。)

Tapestry 中的标注

Java 5.0 中的一项新特性是标注语法。使用标注,可以用一种与内联注释非常相似的样式对代码进行标记,标注以 @ 符号开始。可以使用标注为类添加元数据,然后编译器或 Tapestry 这样的框架可以使用元数据。具体来说,Tapestry 允许使用标注,直接在代码中描述原本需要在额外页面或组件中定义的行为。请参阅 参考资料 学习关于 Java 5.0 中标注的更多内容。

前提条件 1:Java 5.0

显然,使用 Tapestry 的第一个要求是,在机器上要有 Java 平台正在运行。虽然 Tapestry 几乎可以和任何相对较新的 Java 版本合作(Java 1.3 及以上版本),但最好是使用 Java 5.0。Tapestry 的几个可选特性只能在 Java 5 下工作。而且,现在真的是没有什么理由 转换到 Java 5:它是稳定并经过良好测试的,已经经过了最初始的发展痛苦。

前提条件 2:构建工具

有了 JVM 和 servlet 引擎,还需要 Apache Ant 这样的构建工具。虽然下载 Ant 很容易,但需要确定在路径中有 Ant 的二进制代码(对于 Linux/Mac OS X 系统是 ant,对于 Windows 系统是 ant.bat)。如果在空目录中输入 ant,可能会看到下面这样的输出:


Buildfile: build.xml does not exist!
Build failed

 

前提条件 3:微内核

最后需要安装一个微内核,叫作 HiveMind,用它为 Tapestry 应用程序登录对象。我不会在这篇文章中详细讨论 HiveMind —— 它本身就值得用几篇文章讨论!—— 但是您会看到 Tapestry 如何使用它。在从 Jakarta Web 站点下载了 HiveMind 之后,请把它放在与 Tapestry 相同的目录中;例如,可能使用 /usr/local/java/hivemind-1.1 或 C:/java/hivemind-1.1。任何位置都可以,只要记住把它放在哪儿了!

Tapestry 实际上还有许多依赖项,但是安装了 HiveMind、Ant 和 Java 5.0 之后,就能让 Tapestry 自己处理剩下的依赖项。因为 Tapestry 是一个 Web 应用程序框架,所以在准备运行应用程序时,还需要一个 servlet 引擎,例如 Apache Tomcat(请参阅 参考资料)。Tapestry 应用程序打包成 WAR 文件(Web 应用程序档案),这样就可以把它们放进 servlet 引擎的 Web 应用程序目录中。这篇文章的所有示例都使用 Tomcat,但是可以很容易地把 Tapestry 用于您选择的其他 servlet 引擎。

 




回页首


下载 Tapestry 4.0

所有的前提条件就绪之后,请前往 Jakarta Tapestry 的主页(请参阅 参考资料),从 Apache 的镜像站点下载 Tapestry。先选择最新的 Tapestry 4.0 版,编写这篇文章时是 tapestry-4.0-beta-12.tar.gz(Windows 用户请选择 .zip 文件)。一般来说,最好是用稳定版来学习一个新框架,而不要使用更新的 beta 代码。但是,Tapestry 4.0 在 2005 年 11 月已经接近 beta 周期的末尾,相对于 Tapestry 3.x 来说提供了显著的 改进。(在阅读这篇文章的时候,Tapestry 4.0 可能已经能够使用了。)

在 Tapestry 的下载站点上时,您可能还想下载文档集。在编写这篇文章的时候,文档集文件叫作 tapestry-4.0-beta-12-docs.tar.gz。展开这个档案,应当得到名为 tapestry-4.0-beta-12 的新文件夹,但是如果下载了更新版的 Tapestry,文件夹名称可能会有变化。

请把这个文件夹移动到自己喜欢的保存 Java 项目安装的地方;例如 /usr/local/java 这样的位置就很好,或者也可以考虑 C:/java。在每种情况下,都要新建一个 Tapestry 目录。在这个目录中,有许多信息;请参考图 1 了解顶级目录结构:


图 1. Tapestry 目录结构
Tapestry 拥有预先构建好的 JAR 文件和许多源代码 

Tapestry 已经就位!

术语安装 对于 Tapestry 来说,有点儿名不符实!Tapestry 与在后台运行的 Java 应用程序或者在网络上提供内容的 servlet 引擎不同。相反,它是一组可以在应用程序中使用的实用工具 —— 从类到标记。所以不是 “安装” Tapestry,而是让 Web 应用程序可以使用它,并把 Tapestry 和它的依赖项与 Web 应用程序绑在一起。

变化、变化、变化

JAR 文件的名称可能略有不同,这与下载的 Tapestry 版本对应。但是,不管 Tapestry 的主版本号是多少,所有 Tapestry 安装中都应当有四个 JAR 文件。

设置 Tapestry 主要是把正确的类组(打包到 Java JAR 文件中)放在正确的目录中。首先,需要找到核心的 Tapestry JAR 文件。这些文件包含 Web 应用程序中要使用的全部 Tapestry 代码,它们位于 Tapestry 发行目录的根目录中:

  • tapestry-4.0-beta-12.jar 包含 Tapestry 的框架部分。   
  • tapestry-annotations-4.0-beta-12.jar 包含在 Java 5.0 上支持 Tapestry 标注所需要的类。   
  • tapestry-contrib-4.0-beta-12.jar 包含那些发布到 Tapestry 中,但是对操作来说并非必需的组件。   
  • tapestry-portlet-4.0-beta-12.jar 包含的类让 Tapestry 可以支持 JSR-168 —— portlet JSR。   

请把这四个 JAR 文件放在使用 Tapestry 的 Web 应用程序的 WEB-INF/lib 目录中,就准备好了 —— 差不多是这样。在启动应用程序之前,只需要再做一点儿 设置。

 




回页首


设置依赖项

Tapestry 试图为 Web 应用程序提供一种简化的编程模型和易于使用的环境。它的做法是抽象出重复的、常见的任务的细节,所以它使用许多 实用工具。不论是支持表达式,还是登记对象,还是创建漂亮的用户界面组件,Tapestry 都依赖第三方库让 Web 开发对于开发人员尽可能容易。

幸运的是,Tapestry 会自己进行大多数依赖项的下载和安装工作。唯一的麻烦就是跟踪这些额外的 JAR 文件,但是正如在这一节中会看到的,这不是个大问题。

因为 Tapestry 用 HiveMind 来确定和下载依赖项,所以第一步是让 Tapestry 知道 HiveMind 文件在哪儿。请转到 Tapestry 目录 —— 可能是 /usr/local/java/tapestry-4.0-beta-12 —— 然后进入 config 目录。应当看到一个 build.properties 文件。打开它的时候,会看到类似清单 1 的内容。在这里列出了 Tapestry 的几个核心库和依赖项,以及它们的位置。这个列表并不反映 Tapestry 需要的全部依赖项,但是反映了编译基本的 Tapestry 应用程序需要的依赖项集合。


清单 1. 默认的 Tapestry build.properties 文件



# Copyright 2005 The Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES or CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

jboss.dir = c:/Work/jboss-3.0.6

jython.dir = c:/Work/Jython21

jetty.dir = c:/Work/Jetty-4.2.22

tomcat.dir = C:/Program Files/Apache Group/Tomcat 4.1

hivebuild.dir=c:/workspace/jakarta-hivemind/hivebuild

clover.dir=c:/Work/clover-1.0

jboss.dir=C:/jboss-4.0.2

 

如果这些项目和分配给它们的位置看起来比较怪,那就对了。实际上应当清除掉属性文件中的全部内容,除了以 hivebuild.dir 和 tomcat.dir 开始的之外,因为这些依赖项应当已经就绪。请修改这些依赖项的位置,使其与 HiveMind 和 Tomcat 的安装位置匹配,build.properties 的最终版本看起来应当像清单 2 这样:


清单 2. 修改后的 build.properties 文件



# Copyright 2005 The Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES or CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

tomcat.dir=/usr/local/java/jakarta-tomcat-5.5.9

hivebuild.dir=c:/workspace/jakarta-hivemind/hivebuild

 

保存这个文件,并返回 Tapestry 的根目录,设置 Ant。

设置 Ant

Ant 的安装非常简单,只是需要些时间。首先在 Tapestry 的根目录下输入 ant install。可以忽略所有文本,直到看到 像这样的文本 为止。

不必担心奇怪的格式;请输入 “continue” 并按下回车,就开始下载 Tapestry 的额外依赖项。这一步骤要花些时间,所以如果构建过程看起来已经执行了一段时间,请不要担心:要下载多个库,还要编译许多代码。甚至还会看到安装了一些测试,然后可能得到 以下(明显的)错误

对于高级开发人员

如果想在 Tapestry 开发中使用额外项目,只需修改 build.properties,反映这些项目的位置即可。然后,只需删除没有 的项目对应的行,并让 Tapestry 下载实际的依赖项。

不要被错误消息吓倒:一定要阅读各种 echo 语句的输出;它们表明 JUnit 已经下载并安装,只需要重新启动构建过程。

构建和更多构建

这是对的,现在还没有完。在提示符下,再次输入 ant install,继续构建。安装了 JUnit 之后,构建会运行许多 JUnit 测试,以确保 Tapestry 的设置正确。因为这个构建过程要花许多时间,所以可以去喝杯咖啡,或者到另一台机器上编写一些 XHTML。如果事情进展顺利,构建过程的末尾 看起来会像这样

这些库都是什么?

构建完成之后,请进入 ext-package/lib 目录,列出目录列表。应当看到像这样的列表:


[bmclaugh:/usr/local/java/tapestry-4.0-beta-12/ext-package/lib]$ ls
cglib-full-2.0.1.jar                    jdom-1.0.jar
cglib-full-2.0.2.jar                    junit-3.8.1.jar
commons-codec-1.3.jar                   log4j-1.2.8.jar
commons-fileupload-1.0.jar              ognl-2.6.7.jar
commons-logging-1.0.4.jar               oro-2.0.8.jar
easymock-1.1.jar                        portlet-api-1.0.jar
easymockclassextension-1.1.jar          servletapi-2.3.jar
hivemind-1.1-rc-1.jar                   spring-1.1.jar
hivemind-lib-1.1-rc-1.jar               tapestry-4.0-beta-12.jar
javassist-3.0.jar                       tapestry-annotations-4.0-beta-12.jar
jboss-j2ee-3.2.1.jar                    tapestry-contrib-4.0-beta-12.jar
jboss-j2ee-4.0.0DR4.jar                 tapestry-portlet-4.0-beta-12.jar
jcharts-0.6.0.jar                       vlibbeans-4.0-beta-12.jar

 

可以看到,构建过程下载了许多 额外的库。其中有许多是在构建 Tapestry 时使用的,其他一些是在编译时使用的。但是,对于运行时,需要把下面这些 Tapestry JAR 文件放在 Web 应用程序的 WEB-INF/lib 目录中:

  • tapestry-4.0-beta-12.jar   
  • tapestry-annotations-4.0-beta-12.jar   
  • tapestry-contrib-4.0-beta-12.jar   
  • tapestry-portlet-4.0-beta-12.jar   

另外,还需要把以下依赖项文件放在 Web 应用程序的 WEB-INF/lib 目录中:

  • commons-codec-1.3.jar:URL 编码和解码工具的文件。   
  • commons-fileupload-1.0.jar:处理多部分文件上载的库。   
  • commons-logging-1.0.4.jar:Tapestry 用来记录信息和错误的框架。   
  • hivemind-1.1-rc-1.jar:Tapestry Java 对象的服务注册表。   
  • hivemind-lib-1.1-rc-1.jar:HiveMind 库。   
  • javassist-3.0.jar:运行时代码增强库。   
  • ognl-2.6.7.jar:导航对象图的表达式语言。   
  • oro-2.0.8.jar:模式匹配的表达式库。   

看起来可能有许多文件,但是对于 Java 库来说,还是很常见的;只要把它们放在正确的位置,就不用再照顾它们了。关于安装的最好的消息就是:现在已经完成了!前提软件安装完成、Tapestry 和全部依赖项设置好之后,就可以看看一些 Tapestry Web 应用程序是什么样了。

分享到:
评论

相关推荐

    Tapestry简单入门.rar_java Tapestry_tapestry

    本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用。 首先,让我们深入理解Tapestry的核心理念。Tapestry的目标是通过提高开发效率、简化代码结构和增强可维护性来改善Java Web应用的...

    tapestry-project-4.1.5

    了解这些库的用途和用法,对于理解Tapestry 如何整合和利用这些资源至关重要。 接下来,"tapestry-project-4.1.5"很可能包含了一个完整的Tapestry 应用示例。这个项目通常会包含源代码、配置文件、测试案例等,是...

    tapestry

    通过对 "sample01" 示例的分析,我们可以全面了解 Tapestry 的核心特性和实际应用。这个框架提供了强大的工具和理念,使开发者能够更高效地构建复杂的Web应用程序。通过深入学习和实践,我们可以掌握如何利用 ...

    Tapestry5.1实例教程

    【Tapestry 5.1 实例教程】 Tapestry 5.1 是一个基于Java的Web应用程序框架,由Apache软件基金会开发。...此外,由于Tapestry的灵活性和强大功能,了解和掌握这个框架对于提升你的Java Web开发技能无疑是一大助力。

    apache-tapestry-5.3.7

    Apache Tapestry 5.3.7 是一个成熟的Java Web应用程序框架,由Apache软件基金会开发并维护。这个框架的核心目标是提供一种...通过研究提供的源码、API文档和二进制包,开发者能够全面了解并充分利用这个框架的功能。

    tapestry-ioc-5.0.3-src

    通过深入研究"tapestry-ioc-5.0.3-src"中的源代码,开发者可以了解Tapestry IOC如何实现这些功能,以及如何将其应用于实际项目,以提升Web应用的开发效率和质量。同时,源代码还提供了丰富的示例,帮助开发者更好地...

    Tapestry-3-Getting Started.doc

    - **Tapestry 3 的高级特性**:深入了解 Tapestry 3 提供的各种高级功能,如自定义组件、事件处理等。 - **最佳实践**:学习如何优化 Tapestry 应用程序,提高性能和可维护性。 - **社区资源**:参与 Tapestry 社区...

    Tapestry字典

    错误和验证消息可以通过`Message`组件呈现给用户,确保用户能够清晰了解输入错误的原因。 **2.4 弹出框校验** Tapestry支持通过JavaScript或CSS触发弹出框,用于显示即时的验证反馈,提升用户体验。 **2.5 使用...

    Tapestry.rar_Java编程_Java_

    了解Java的基本语法、类、对象、接口、异常处理以及集合框架等是使用Tapestry的前提。Java的强类型系统和垃圾回收机制使得开发大型复杂应用更为稳健。 ### 2. Tapestry概述 Tapestry是一个MVC(Model-View-...

    t5contrib-jongo:Tapestry5 - Jongo 模块

    在压缩包文件"t5contrib-jongo-master"中,包含了T5Contrib-Jongo模块的源代码,开发者可以通过阅读源码来了解其内部实现和如何在自己的项目中集成。通常,这些源码会包含: - **示例**:可能包含演示如何在...

    java初学者的比较好的学习路线(转)

    - **Tapestry**:掌握Tapestry框架的主要功能。 ##### 其他框架和技术 - **JSF/Velocity/Freemarker**:了解这些视图技术的特点和区别。 - **Hibernate/Ibatis**:学习如何使用Hibernate进行对象关系映射。 - **...

    java面试复习总结.doc.docx

    Java面试复习总结主要涵盖了几大框架的技术点,包括Tapestry、Struts、SpringMVC、Spring、Hibernate和MyBatis,...在准备面试时,除了了解基本概念,还需要深入理解其实现原理,以及在实际项目中的应用和优化策略。

    JFly Application Framework-开源

    通过解析这个文件,我们可以了解到JFly框架所依赖的Tapestry5.1和Dojo Toolkit的具体版本,以及其他必要的库。 2. **dojotapestry5demo**:这可能是包含一个示例应用的目录,展示如何使用JFly框架和Dojo Toolkit开发...

    Hibernate Quickly

    - **Web框架集成**:展示了如何在WebWork、Struts和Tapestry等Web框架中使用Hibernate进行数据持久化。 - **使用XDoclet进行注释驱动的映射**:介绍了一种通过注释而非XML配置文件来进行实体映射的方法。 - **单元...

    GXT以及Web框架历史

    如JSF、Struts、Tapestry、WebWork等,到模仿MVC模式的Web组件和事件驱动框架,再到Java代码编译为HTML页面的GWT,以及如何与Ext、SmartClient、jQuery等其他Ajax框架结合使用,本文将带你深入了解Web开发框架的历史...

    java技术体系和学习提纲-图文.doc

    8. **Web开发**:熟练使用Servlets、JSP、JSTL,以及了解主流Web框架如JSF、Struts、Tapestry、Cocoon、WebWork。 9. **Web服务器管理**:熟悉Tomcat、Resin、JRun等Web服务器的配置和管理。 10. **分布式计算**:...

    基于SSH的web开发

    在Web显示层框架的选择上,有多种选项如JSF、Spring MVC、Stripes、Struts1.x、Struts2.0、Tapestry、Wicket、Flex、GWT、Seam、Ext等。选择哪个框架取决于项目的特性,如是否需要富客户端交互、对Ajax的支持程度、...

    Java高手的25个学习要点.txt

    了解常见的Web应用框架如JSF、Struts、Tapestry等。 这些框架都采用了MVC架构模式,但各有特色。例如,JSF(JavaServer Faces)是Sun Microsystems提供的官方标准,具有强大的组件库;Struts则以其灵活性和社区...

    学习java的30个目标.txt

    - **框架选择**:JSF、Struts、Tapestry、Cocoon、WebWork等。 - **设计理念**:理解MVC(Model-View-Controller)与MODEL2架构的区别及优势。 #### 目标10:部署Web应用服务器 - **服务器选择**:Tomcat、Resin、...

    spring3.0MVC中文教程.doc

    Spring MVC不仅能够独立工作,还可以与其他流行的Web框架如Struts、WebWork、Java Server Faces和Tapestry无缝集成。这种灵活性使得开发者可以根据项目需求选择最适合的组件。 Spring3.0 MVC教程分为多个部分,从...

Global site tag (gtag.js) - Google Analytics