作者:Kenny Lee
| 来源:http://www.topxp.org
|
简单介绍
不必关心链接!不必关心请求
(http request)
到了哪里!不必关心响应
(http response)
要转向哪里!
Tapestry
构建于底层的
request-resonse
模式,基于
Servlet
技术,抽象出面向组件开发的模型。
Tapestry
关心的是:页面、组件、事件、对象、方法、属性
!
安装
jar
包
1
、
将
Tapestry
解压目录下的
lib
目录中的
jar
包拷贝到
WEB-INF/lib
目录。
并将重复的包删除(
commons-logging.jar/javassist.jar/ognl-2.6.11.jar
)
2
、
在
web.xml
中添加:
<
servlet
>
<
servlet-name
>
app
</
servlet-name
>
<
servlet-class
>
org.apache.tapestry.ApplicationServlet
</
servlet-class
>
<
load-on-startup
>
0
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
app
</
servlet-name
>
<
url-pattern
>
/app
</
url-pattern
>
</
servlet-mapping
>
|
这是
Tapestry
的中央控制器。
Tapestry
页面的显示,所有的请求,都会被发送到这个
Servlet
上。
实例
1
:最简单的
Tapestry
程序
在
WebRoot
下添加
Home.html
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=GB18030"
>
<
title
>
Insert title here
</
title
>
</
head
>
<
body
>
第一个
Tapestry
程序
</
body
>
</
html
>
|
并访问网址:
http://localhost:8088/[context path]/app
|
结果页面显示
Home.html
里面的内容。
这是因为
Tapestry
总是会包含一个名字叫
”Home”
的页面,默认情况下就是根路径下的
Home.html
实例
2
:添加简单的动态内容
Home.html
改为:
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=GB18030"
>
<
title
>
Insert title here
</
title
>
</
head
>
<
body
>
第一个
Tapestry
程序
现在时间是:
<span jwcid="@Insert" value="ognl:new java.util.Date()"> </span>
</
body
>
</
html
>
|
重新访问网址:
http://localhost:8088/[context path]/app
在这个页面上,用到了
Tapestry
的
Insert
组件(
Component
)。它带一个参数,通过一个
ognl
表达式来传递。
在应用服务器的启动参数中添加:
-Dorg.apache.tapestry.disable-caching=true
,可以避免每次修改页面模板的时候重启服务器。
jwc = Java Web Component
实例
3
:创建链接,指向某个页面
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=GB18030"
>
<
title
>
Insert title here
</
title
>
</
head
>
<
body
>
第一个
Tapestry
程序
现在时间是:
<
span
jwcid
=
"@Insert"
value
=
"ognl:new java.util.Date()"
></
span
>
<
p
>
<a href="#" jwcid="@PageLink" page="Home">
刷新
</a>
</
body
>
</
html
>
|
这次,通过一个
PageLink
组件,指向
Home
页面,
PageLink
组件会自动产生指向
Home
页面的链接(我们不必关心这个链接!)。
实例
4
:简单的计数器
直到现在为止,我们还没有涉及到
java
类,但是已经让
Tapestry
成功运行起来了!该是写点
java
代码的时候了。我们想要创建一个计数器,每当用户点击“计数器增
1
”的时候,我们将这个计数器加
1
,然后在页面上显示出这个结果。
在传统的请求
-
响应模式中,我们针对这个问题,需要考虑的是:递交一个请求,创建相应的
Action
来接收这个请求,并维护计数器的值,然后决定成功转向的页面,将结果显示在页面上。
在
Tapestry
中,我们需要考虑的是:在哪个页面处理这个事件,结果如何显示在页面上?
下面是
Home.html
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=GB18030"
>
<
title
>
Insert title here
</
title
>
</
head
>
<
body
>
第一个
Tapestry
程序
现在时间是:
<
span
jwcid
=
"@Insert"
value
=
"ognl:new java.util.Date()"
></
span
>
<
p
>
<
a
href
=
"#"
jwcid
=
"@PageLink"
page
=
"Home"
>
刷新
</
a
>
<
p
>
计数器当前的值是:
<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick">
计数器增
1</a>
</
body
>
</
html
>
|
DirectLink
指定的
listener
为:
doClick
,这将触发一个事件,实际上就是将要调用
doClick()
方法。
doClick()
方法将要写在哪里?因为现在的页面,其动态数据无法简单获得,所以,必须给当前页面创建一个对应的类,我们的方法将创建在这个类里面。
package com.bjsxt.crm.web.tapestry.test;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.html.BasePage;
public abstract class Home extends BasePage {
@Persist
public abstract int getCounter();
public abstract void setCounter(int count);
public void doClick(){
int counter = getCounter();
counter = counter + 1;
setCounter(counter);
}
}
|
注意
:在这个例子中,类名需定义为
Home
;
listener
的名字为
doClick
,而不是
doClick()
另外,需要在
web-inf
目录下添加配置文件:
app.application
<?xml version="1.0"?>
<!DOCTYPE
application
PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://tapestry.apache.org/dtd/Tapestry_4_0.dtd"
>
<application>
<meta
key
=
"org.apache.tapestry.page-class-packages"
value
=
"com.bjsxt.crm.web.tapestry.test"
/>
</application>
|
配置的主要目的是让
Tapestry
了解如何关联页面和页面类。
实例
5
:带一个参数的计数器
Home.html
改为:
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=GB18030"
>
<
title
>
Insert title here
</
title
>
</
|
分享到:
相关推荐
【Tapestry4.1.2 入门-介绍】 Tapestry 是一个基于Java的Web应用程序框架,它提供了一种面向组件的开发方式,极大地简化了Web应用的构建过程。在Tapestry中,开发者无需关注HTTP请求的处理细节,如链接、请求流向和...
在开始使用Tapestry 4.1.2之前,首先需要进行必要的环境配置。这包括将Tapestry提供的jar包拷贝到项目的WEB-INF/lib目录下,并确保移除重复的库(如commons-logging.jar、javassist.jar和ognl-2.6.11.jar)。然后,...
本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用。 首先,让我们深入理解Tapestry的核心理念。Tapestry的目标是通过提高开发效率、简化代码结构和增强可维护性来改善Java Web应用的...
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
01-Tapestry入门开源框架,初学者的首选
**一、Tapestry 5.1入门** 1. **环境配置**:首先,你需要安装Java Development Kit (JDK) 和Apache Maven,这两个是开发Tapestry应用的基础。配置Maven的`pom.xml`文件,以便引入Tapestry 5.1的相关依赖。 2. **...
《EnjoyWeb:Tapestry入门》是一本专为希望快速掌握Tapestry框架并享受Web开发乐趣的读者设计的教程。Tapestry是一款强大的、基于Java的Web开发框架,它简化了复杂的应用程序构建过程,使得开发者能够更专注于业务...
Tapestry4是一款基于Java的Web应用程序框架,它在2000年代初期非常流行,由Apache软件基金会维护。这个框架的主要目标是提供一种高效、易于理解和使用的工具,用于构建动态、数据驱动的Web应用。以下是一些关于...
【Tapestry框架详解】 Tapestry是一款开源的基于Servlet的应用程序框架,它采用组件对象模型来构建动态、交互式的Web应用。这个框架的核心概念是Java Web Component(JWC),表现为HTML标记上的jwcid属性。JWC允许...
### Tapestry5最新中文入门实例教程 #### 一、引言 Tapestry是一个使用Java语言创建Web应用程序的面向组件的开发框架。本教程旨在通过实际案例帮助读者掌握Tapestry 5的基本概念和核心功能,并体验其带来的高效开发...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...
本指南将着重于Tapestry4的快速入门和实践,对于理论部分,建议读者参考之前关于Tapestry3的资料,以获得更全面的理解。 #### 五、Tapestry4 QuickStart 为了帮助开发者快速上手Tapestry4,以下是一套环境搭建步骤...
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web..., 本书适合Web框架技术的爱好者、Tapestry入门学习者、Tapestry表现层开发人员和关注下一代的Web开发技术的公司与个人用户。
**Tapestry 3 开发指南** Tapestry 3 是一个开源的Java Web应用程序框架,它在20世纪90年代末至21世纪初非常流行,由Apache软件基金会维护。这个框架提供了组件化、事件驱动和声明式编程模型,帮助开发者构建动态、...
Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它强调组件化、模块化和松耦合的开发方式,使得开发人员可以构建出高效、可维护的Web应用。以下是对Tapestry源码、API及相关库的详细解读: 1....