Tapestry 是一个用java写成的,基于组件的网络程序框架。Tapestry不仅仅是一个简单的模板化的系统。Tapestry在Java Servlet基础上的建立的一个平台,在平台上可以建立一个动态的,交互的网站。它不仅仅是一个模板语言,而且是一个真正的框架,利用一些简单的,可以重用的组件来建立复杂的应用程序。Tapestry在建立网络程序的时候简化了很多易错的工作,例如接受各种任务,比如分发接受到的请求,建立和解释URL,处理本地化和国际化的问题以及更多。
对Tapestry的高度评价是"对象,方法和属性",也就是说,不仅仅使开发者关注Servlet的API:requests, responses, sessions, attributes, parameters, URLs等等,Tapestry使得开发者更关注于对象(包括Tapestry的页面和组件,而且包括程序的对象),对象的方法以及那些对象的javaBean的属性。也就是说,在一个tapestry的程序中,用户的动作(点击链接,提交表单)会导致对象的属性的变化,这些属性和用户支持的方法(包括程序逻辑)组合在一起。
在Tapestry中,你不需要写servlet,你只要写一些Listener方法,你同样不需要为servlet建立URL,你可以利用一个存在的组件(例如DirectLink)并配置他的listener的参数来调用方法。那么Listener的方法到底做了什么呢?它和后台系统进行交互(通常是无状态的session EJB)或者是做一些其他的和request相关的记录,同时提供给用户一个新的页面。基本上是这个servlet的核心代码。在tapestry中,你不需要写那些重复的,机械的代码(例如建立url,分发请求,管理服务器段的状态等等),因为那些都被tapestry这个框架完成了。
但是这并不表示Servlet API是不可访问的,它仅仅是不跟一个典型的tapestry用户相关。
本文档描述了很多tapestry的一些内在的情况。本文不是教程(教程是另外一个单独的文档)。事实上,本文档是给一些tapestry的用户的指南,目的是给那些想使用tapestry的开发者。
tapestry目前的版本是 4.0,在过去的十几年里已经过了长足的发展。Tapestry始终关注于生成动态的html代码,尽管有大量的软件支持XHTML XML 和 WML。
几乎所有的Tapestry的API都是一接口的形式出现,同时有默认的实现。只要用新的对象取代现有的接口,框架的行为可以被很容易的取代。最平常的例子就是重载一个存贮的页面和它的组件(也许存贮在数据库中)。
最后,Tapestry有值得自豪的完整的JavaDoc的文档。本文档是用来支持那份文档的,来填补那分文档的一些不明显的不足。当然JavaDoc是最好的文档。
也许理解Tapestry最难的部分就是它是一个以基于组件的,而不是以基于操作的。大多数的技术(Struts,servlets, PHP等等)都是基于操作的。当你建立一个servlet以后,当用户点击一个链接或者提交一个form的时候机会调用它。你必须选定一个适当的链接,和要传递参数的名字和类型,这样你才能在URL中传递你所需要的信息。
对于那些操作(点击链接或提交表单),你同样必须负责去连接你的外部页面(不管他们是JSP,servlets, PHP,或者其他形式的模板技术)。这需要你建立URL并且把他们放到一个<a>的标签中,或者是放在一个<form>标签的action属性中。
tapestry中所有的东西都是不同的。Tapestry程序由页面组成,页面是由小的组件构成,组件本身也有可能由其他组件构成。每一个页面都由一个唯一的名字,页面中的每个组件都有它唯一的ID...这就是组件模型。同时,每一个组件都有一个地址,可以快速的和URL进行绑定。
事实上,在“向购物车添加物品”的操作中,你不需要写servlet,甚至也不用写组件。你只需要拿一个已有的组件,例如(DirectLink),然后配置它。当这个组件被显示的时候,它会建立一个回调的链接,当你点击这个链接的时候,这个回调链接(包括了页面名称和页面内的组件的ID)将会调用组件上的方法,然后这个方法就会调用你的程序制定的Listener方法
posted on 2005-12-16 16:02
我的java天地 阅读(727)
评论(2) 编辑 收藏