1. Tapestry4开发环境的安装
JDK:5.0
开发工具:Eclipse3.2 , WTP 1.5.2
服务器:Tomcat 5.5.20
2. Tapestry4下载
版本:tapestry-project-4.1.1-bin.zip
3. 安装Tapestry4
解压下载下来的tapestry-project-4.1.1-bin.zip的文件,解压后目录如下:
tapestry-project-4.1.1-bin目录下面包含了一些文件夹,每个文件夹下面都是开发Tapestry要用到的一些jar文件。我将每一个独立的jar文件拷贝出来,所有的jar文件如下图:
在开发Tapestry应用时,需要将这些jar文件拷贝到Tapestry_App\WEB-INF\lib目录下。
4.第一个Tapestry应用
1 新建一个WTP项目,取名为HelloWorld:
2 拷贝刚才解压后得到的那些jar文件到HelloWorld\WEB-INF\lib目录下,刷新HelloWorld工程,如图:
3 修改web.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>HelloWorld</display-name>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>
org.apache.tapestry.ApplicationServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
</web-app>
在web.xml中配置了一个servlet,将所有的对/app的请求,都交给了org.apache.tapestry.ApplicationServlet。4 在WebContent目录下面新建一个Home.html文件,内容如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<span jwcid="hello" />
</body>
</html>
可以看到,这个HTML文件,只是用到了一个标准的HTML标签<span>,实际上,打开后并没有任何内容。唯一不同的是,在<span>标签内部使用了一个”jwcid”的属性,”jwcid”是什么?jwcid是“Java Web Component id”缩写,它是Tapestry用来标识一个Tapestry组件的,当<span>标签中加入了jwcid后,就成了Tapestry的一个组件。这样,这个Tapestry组件(<span jwcid=”hello”>)的id为”hello”。那么将HTML标签标识为Tapestry组件有什么作用呢?当Tapestry显示HTML页面的时候,它会查找页面中的Tapestry组件,Tapestry就会去创建这样的一个组件,并且生成相应的HTML代码,最后使用生成的HTML代码去替换这个在页面中声明的组件,像<span>。它的过程如下:
上面我们已经在HTML页面中定义了一个Tapestry组件”hello”,那么,Tapestry怎么知道页面中的组件,以及它的类型呢?答案是使用Tapestry的页面配置文件,针对HTML页面,Tapestry都有相应的XXX.page配置文件来配置Tapestry页面组件,针对上面的Home.html,就会有一个对应的Home.page配置文件。5 配置Home.page文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class=”org.rainlife.helloworld.Home” >
<component id="hello" type="Insert">
<binding name="value" value="ognl:hello"/>
</component>
</page-specification>
在这个配置文件中,配置了一个组件component,它的id为”hello”,也就是我们在Home.html页面文件中由jwcid=”hello”所指定的组件的id,这样就就将页面组件和Tapestry连结起来了。type=”Insert”声明这一个组件的类型为”Insert”,用来输入一些简单的文本。每一个Tapestry组件都有一系列的参数,通过<binding>元素绑定的组件上,这个”value”参数用来输入组件返回的值。具体的可以参看Tapestry的dtd验证文件。<binding>元素的”value”属性就是组件要返回的值,”ognl:”前缀说明使用了一个OGNL表达式。关于OGNL表达式,请参看OGNL的参考文档。在这里,这个OGNL表达式将会去调用组件对象的getHello()方法。我们再回过头来看一下<page-specification >的class属性,它指向了一个JAVA类,org.rainlife.helloworld.Home,针对Tapestry的每一个页面文件,都会有相应的一个JAVA类,页每一个Tapestry组件,也只是一个JAVA的对象,而这个JAVA对象的返回值,就是组件的返回值。下面来看看这个org.rainlife.helloworld.Home类。
6 定义Home.java类,内容如下:
package org.rainlife.helloworld;
import org.apache.tapestry.html.BasePage;
public abstract class Home extends BasePage {
public String getHello() {
return "Hello World!";
}
}
可以看到,这只是一个普通的类,它继承自org.apache.tapestry.html.BasePage,它是一个抽象类,Tapestry会自动地创建Home类的子类。
(这里有一个奇怪,就是在使用Tapestry 4.0的jar包时,Home类不用声明为abstract,董黎伟先生写的《Tapestry4开发指南》上也说明Tapesrty4.0后就可以不用声明为抽象类,但当我使用Tapestry 4.1.1的jar包后,却又了必须声明为抽象的)。
言归正传,在这个Home类中只有一个方法getHello(),并且只简单地返回了一个字符串”Hello World!”,对,这个字符串就是我们要在网页上面显示的内容,在Home.page文件中定义的组件中,我们使用”ognl:hello”将getHello()方法的返回值绑定到了组件”hello”上面。
7 运行
首先先建立一个服务器,
打开“窗口”->“首选项”->“服务器”->“已安装运行时”->“添加”,新建一个运行时环境,接着在“服务器”视图上新建一个服务器,在这里,我们需要为服务器添加两条JVM启动参数:
-Dorg.apache.tapestry.disable-caching=true
-Dorg.apache.tapestry.enable-reset-service=true
它们的作用是关闭Tapestry的页面缓存,这样就能够让我们在开发项目的时候,修改html和page之后,不需要频繁地重新启动项目。但是在加载这两条参数之后,内存消耗比较大,所以在项目发布的时候,我们就不再使用这两条参数了。然后将HelloWorld发布到Tomcat中去,最后启动服务器,打开浏览器,在地址栏中输入http://localhost:8080/HelloWorld/app,就可以看到运行的结果了。
分享到:
相关推荐
Tapestry4是一款基于Java的Web应用程序框架,它在2000年代初期非常流行,由Apache软件基金会维护。这个框架的主要目标是提供一种高效、易于理解和使用的工具,用于构建动态、数据驱动的Web应用。以下是一些关于...
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
在"Tapestry入门.docx"中,你将了解到如何设置开发环境,包括安装必要的工具和库,配置IDE(如Eclipse或IntelliJ IDEA),以及创建第一个Tapestry应用。这通常涉及以下几个步骤: 1. **环境配置**:安装Java ...
【Tapestry4.1.2 入门-介绍】 Tapestry 是一个基于Java的Web应用程序框架,它提供了一种面向组件的开发方式,极大地简化了Web应用的构建过程。在Tapestry中,开发者无需关注HTTP请求的处理细节,如链接、请求流向和...
【Tapestry4开发指南】 Tapestry4是一款基于Java的Web应用框架,它的前身是Tapestry3.1。该框架的创始人Howard不仅开发了Tapestry,还同时创建了轻量级的Hivemind框架。Tapestry3.1在设计初期即在Hivemind框架下...
01-Tapestry入门开源框架,初学者的首选
"Tapestry4 Users Guide" 和 "Tapestry4 Quick Start" 这两份文档,分别提供了全面的用户指南和快速入门教程,帮助开发者了解和掌握Tapestry 4的使用方法和最佳实践。 10. **社区支持**: 作为Apache项目的一部分...
**一、Tapestry 5.1入门** 1. **环境配置**:首先,你需要安装Java Development Kit (JDK) 和Apache Maven,这两个是开发Tapestry应用的基础。配置Maven的`pom.xml`文件,以便引入Tapestry 5.1的相关依赖。 2. **...
这份文档可能是针对Tapestry 5的最新中文教程,旨在为初学者提供一个易懂的入门指南。通常,它会涵盖基本的框架安装、环境配置、组件使用、事件处理、页面和组件生命周期等主题。通过阅读这份教程,开发者可以快速...
另一方面,"MyHivemind-quickStart"可能是另一个快速入门示例,旨在帮助开发者迅速上手Tapestry4。Hivemind是与Tapestry紧密关联的一个模块化服务框架,它允许开发者组织和管理应用中的服务。快速启动包通常包含最小...
《EnjoyWeb:Tapestry入门》是一本专为希望快速掌握Tapestry框架并享受Web开发乐趣的读者设计的教程。Tapestry是一款强大的、基于Java的Web开发框架,它简化了复杂的应用程序构建过程,使得开发者能够更专注于业务...
### Tapestry5最新中文入门实例教程 #### 一、引言 Tapestry是一个使用Java语言创建Web应用程序的面向组件的开发框架。本教程旨在通过实际案例帮助读者掌握Tapestry 5的基本概念和核心功能,并体验其带来的高效开发...
在这个名为"MyTapestry4-quickStart.rar"的压缩包中,包含的是一个Tapestry4的快速入门项目,帮助开发者快速了解并开始使用这个框架。 在描述中提到,这个项目是基于JDK1.5开发的,这意味着我们需要Java 1.5或更高...
【Tapestry框架详解】 Tapestry是一款开源的基于Servlet的应用程序框架,它采用组件对象模型来构建动态、交互式的Web应用。这个框架的核心概念是Java Web Component(JWC),表现为HTML标记上的jwcid属性。JWC允许...
Tapestry 4 Quick Start(2)文档通常会引导读者快速入门,介绍如何搭建一个基本的Tapestry项目,包括环境配置、创建第一个页面、编写组件和处理用户交互等步骤。它可能会涵盖以下知识点: 1. **环境配置**:讲解如何...
1. **官方文档**:Apache Tapestry 提供了详尽的官方文档,包括快速入门、API参考和示例项目。 2. **社区支持**:开发者可以在Apache邮件列表、Stack Overflow等社区获取帮助和讨论问题。 3. **示例项目**:“复件 ...