Tapestry 培训

openmymind 贡献于2013-12-19

作者 Administrator  创建于2013-12-20 02:54:00   修改者Administrator  修改于2013-12-20 02:54:00字数2796

文档摘要:Tapestry框架是一个位于javaservlet容器和Tapestry应用程序之间的层。Tapestry不是一个独立运行的服务器;它是一个servlet的扩展,它运行于servlet容器(例如Tomcat)或包含servlet容器的应用服务器中(如Jboss,Websphere,或者WebLogic).Tapestry应用其实是由一系列页面组成,而每个页面是由可以复用的组件构成。
关键词:

1 tapestry 原理 简介 Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层。Tapestry不是一个独立运行的服务器;它是一个servlet的扩展,它运行于servlet容器(例如Tomcat)或包含servlet容器的应用服务器中(如Jboss,Websphere,或者WebLogic). Tapestry应用其实是由一系列页面组成,而每个页面是由可以复用的组件构成。 Tapestry的工作原理如下:在web.xml文件中定义一个名为ApplicationServlet的servlet来进行处理所有的http请求,这和struts有点相似,不过它主要职责是负责引导整个tapestry核心,启动日志功能,读取配置文件,创建工作引擎来指派客户请求。ApplicationServlet主要是通过它的配置文件来进行自身管理的,你可以通过在web.xml中定义一个名为org.apache.tapestry.specification-path的初始参数来指定这个配置文件,当然如果你觉得这样麻烦,那你也可以不指定配置文件,但tapestry会自动寻找与此servlet同名的配置文件,例如在web.xml中的定义如下: <servlet> <servlet-name>Registration</servlet-name> <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> 那么Tapestry会自动寻找一个名为Registration.application的配置文件,如果用户没有定义此文件,那么Tapestry将不能正常启动 2 详解 Tapestry把在建立Web应用程序容易出错的工作交由框架本身来完成,接管了大量手工完成的任务,如分发用户请求,创建和解释URL信息,操作本地化和国际化等等大量的工作。 Tapestry也是由“对象、方法、域”这些面像对象元素构成,但是它更关注于开发者关心的Servlet API的请求,回复,会话,属性,参数,URLs等等开销。Tapestry关注的重点在对象(包括页,组件,也包括系统的域对象),和这些对象的方法,这些对象的JavaBean属性。在一个Tapestry应用系统里,用户动作(点击Link,提交表单)的结果是通过用户组合的方法(在应用程序的逻辑里包含了它)改变了对象的属性,Tapestry关心的是如何联系用户的动作和这些动作所引响到的对象 由于internet技术的广泛流行,越来越多的程序开发模式正在从C/S向B/S转换,由于B/S模式具有瘦客户端的优点——无须安装客户端程序,这就大大减轻了软件升级的费用,所有的业务逻辑和数据库存储都放在服务端,从而提高了系统的可维护性。而且由于HTTP协议是一个开放式的标准,因此只要是支持HTTP协议的浏览器都可以运行,再结合目前的XML技术,可以方便地实现跨平台的分布式应用。   但B/S架构有其天生的缺点:无状态性。这其实并不是B/S程序的错,而是由于B/S程序是建立在http协议的基础上的,因此程序无法维护各个客户端的状态,不过所幸的是这个问题现在已经解决了。   现行的B/S开发的另一大缺陷是:代码和HTML页面揉和在一起了,对程序员和美工非常不利,而且对代码的维护简直是一场恶梦,这相信是许多Web开发者的一种体会。而C/ S结构就没有这种缺陷,因为它是基于组件的,比如VB,你有多得数不清的ActiveX控件来完成一些复杂的界面。   也许你看到这里,心里在盘算着:还是用C/S算了,省得这么多麻烦,但是一个不敢于尝试新技术的公司往往是一个被新技术淘汰的公司。 [struts和Tapestry]:   为了解决上述问题,apache组织开发了一个基于JSP的MVC模式的实现:struts。它将WEB表现层分为model-view-controller几个部分,通过一个servlet来对web的流程进行控件,这与单纯的JSP或ASP相比确实进步了不少,因为利用struts能清楚地界定web的流程,而且不提倡使用<% …. %>语句,转而代之的是taglib技术。但它始终没有摆脱代码和HTML页面揉和的问题,而且它的原理对于JSP初学者来说比较复杂,taglib库不够丰富,而且taglib也不像组件那样能够继承。 Tapestry使用了类似于传统C/S的开发方法:基于组件的开发。使用tapestry,你就可以得到以下好处:   1、非常高的代码复用性,因为在tapestry中,任何事物都可以看作一个可复用的组件。   2、将JSP开发者从繁琐的JSP代码中解脱出来,取而代之的是真正面像对像方法,而不是URL解析。   3、对页面国际化的充分支持   4、精确地错误报告,可以将错误定位到源程序中的行,取代了JSP中那些莫名奇妙地错误提示。   充分支持团队开发,美工人员和JAVA开发人员可以融洽地相处,互相都不依赖于对方。 [JSF和Tapestry]: JSF和Tapestry作为MVC框架,在一些基本特性上是非常类似的: ◆它们都让开发者不再直接与Servlet API打交道,而是让开发者在一个更高的抽象层上思考问题; ◆它们都将web页面上的显示元素绑定到一个java对象的某个属性上,这些属性可能是字符串、数字、日期或者其他类型,并且由该对象来维护其状态。用户在页面上的交互行为(比如用鼠标点击一个按钮或者链接)都直接映射为java类中的一个事件处理方法; ◆两种框架都支持组件式的开发方式,并且开发的组件可被其他开发者重用。两种框架都自带一个标准组件库,提供web开发的常见通用功能 3 页面缓冲池 4 页面装载 页面一旦被装载,它就附加于当前的请求。注意存在许多的线程,每一个线程处理它自己的请求。许多情况下,会有同一页面的多份拷贝附加于不同的请求(即不同的线程)。这也是Tapestry不用你担心多线程的问题……对象参与任何请求且只用于该请求(即该线程)。 在请求结束时,响应(response)被发往客户端后,页面便脱离该请求。这正是执行一个页面清理的时机,如丢弃一些临时的对象(以便它们可以被垃圾回收器回收)、返回页面最初的状态。脱离后,页面被置入页面池,以等待稍后的请求重新使用它(很可能是另外一个用户)。 5 T5 新特性 6 生命周期 a 一般页面页面函数执行顺序 b 根据资料,Tapestry的生命周期是可以定制的,目前开发中还用到过,有兴趣的可以自己去了解下 7 持久状态 8 基本组件 9 开发常见问题 1 在页面加载必调方法中[如get、pageAttached、onActivate],无条件执行数据库操作 2 在没必要的对象上持久化

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档