作者: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> </head> <body> 第一个Tapestry程序 现在时间是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span> <p> <a href="#" jwcid="@PageLink" page="Home">刷新</a> <p> 计数器当前的值是:<spa |
发表评论
-
Servlet简单例子
2009-06-22 11:21 3758例子一: import java.io.IOExcept ... -
尚学堂OA系统中ACL的CRUD解释
2009-03-19 01:43 944尚学堂OA系统中ACL 中用 int 表示权限是什么意思一个 ... -
static{}的意思.
2009-03-22 23:44 757static{}中的代码表示是在类装载的时候执行一次,且仅执行 ... -
static关键字的解释
2009-03-23 00:08 632static关键字可以用来修饰类的变量,方法和内部类 ... -
struts-2.x中文传输的出现的乱码解决.
2009-04-03 13:01 720我已经在struts.xml中添加了<constant ... -
Ioc容器的革命性优点
2009-04-17 10:36 641http://www.jdon.com 2005/08/06 ... -
abstract class与interface区别
2009-04-18 19:20 697abstract class和interface是Ja ... -
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
2009-04-18 20:37 984以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 ... -
写一个Singleton出来。
2009-04-18 21:58 818Singleton模式主要作用是保证在Java应用程序中,一个 ... -
一道关于静态变量的初始化顺序面试题
2009-05-18 01:39 866package com.test; pub ... -
如何得到某个类所对应的class对象
2009-05-18 14:13 6171、在的类的.class语法 2、通过类的getClass( ... -
面试题(String 对象)
2009-05-19 15:13 582package com.test; public class ... -
链接MySQL的代码片断
2009-05-19 16:38 576public class DB {public static ... -
xdoclet介绍
2009-05-27 00:29 768Xdoclet 基本概念 我们可以在 java 代 ... -
Ant介绍
2009-05-27 00:33 719Ant 是什么? Ant 是一个构建工具,它可以帮助我们 ... -
关于log4j
2009-05-28 13:47 628Log日志:主要用于记录程序运行的情况,以便于程序在部署之后的 ...
相关推荐
不必关心链接!不必关心请求(http request)到了哪里!...Tapestry构建于底层的request-resonse模式,基于Servlet技术,抽象出面向组件开发的模型。Tapestry关心的是:页面、组件、事件、对象、方法、属性!
Tapestry 不必关心链接!不必关心请求(http request)到了哪里!不必关心响应(http response)要转向哪里!Tapestry构建于底层的request-resonse模式,基于Servlet技术,抽象出面向组件开发的模型。Tapestry关心的是:...
不必关心链接!不必关心请求(http request)到了哪里!...Tapestry构建于底层的request-resonse模式,基于Servlet技术,抽象出面向组件开发的模型。Tapestry关心的是:页面、组件、事件、对象、方法、属性!
Tapestry简单入门介绍,包含Tapestry入门、tapestry组件介绍
强大的tapestry框架的学习入门资料,详细介绍了tapestry的常用开发文档。
01-Tapestry入门开源框架,初学者的首选
Tapestry 5.1 实例教程(全部) Tapestry 5.1入门教程,包含基础入门及一些高级组件的使用教程,是学习Tapestry5.1不可多得的教程!
一本非常好的TAPESTRY入门教程
Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。 一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。 Tapestry使得java代码与...
本文介绍Tapestry框架版本5。本文利用Tapestry 5开发一个简单的具有创建/读/更新/删除功能的应用,在创建这个应用的过程中,本文体会到Tapestry带来的开发效率的提升。从多方面来讲解 Tapestry应用,比如应用的...
个人开发Tapesry4时用的,个人觉得帮助很大。
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是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...
Tapestry 4 官方文档中文版本,现在中文资料比较少,和大家共享一下
Tapestry5.0.16文档和大家一起学习
tapestry3开发指南,带tapestry3所有jar包
tapestry 实例tapestry 实例tapestry 实例tapestry 实例