天天看点

Tapestry的介绍

      在Web应用框架中,MVC往往是实现Web应用前端分层的重要设计模式。由于Struts提供了优异的控制

  器,这使得它成为了事实上的Web框架标准。在Web MVC中,视图层往往采用JSP和HTML技术,而模型层可

  用的技术比较多(比如EJB,JDO等等)。就技术而言,如果你用Struts来开发Web应用,Struts为你提供了

  优异的控制器。但就视图层的支持就有点让人不敢恭维,因为用Struts的标记库设计出来的页面,一般

  的美工人员,无法美化(不要小看美化工作,用户接触一个软件时,最先接触的是界面)。

      而Tapestry让我心动的地方就是:我开发的主要精力都集中在业务逻辑上,而不用考虑界面,并且

  软件的界面工作可以交给美工。并且后期的软件维护比较轻松,不用在面对烦人的“界面和业务逻辑混在一起的”

  JSP。

    Tapestry的开发哲学是使得开发者能够以“对象、方法、属性”思考Web应用,而不是传统的“HTTP请求、

  HTTP响应、会话(SESSION)、属性、参数、URL”。在使用Tapestry时只要专注于对象、对象的方法和属性。

  比如:用户在使用由Tapestry开发的Web应用中,用户的行为(比如:单击URL链接、提交表单)将触发对象

  属性的变化,以及事件(对对象中方法的调用)的发生。而这些工作都是由Tapestry关注,开发者只要借助

  Tapestry提供的API,而不用理会底层的调用过程。这对交互性极强的Web应用十分适合。

     另外开发者在使用Tapestry的过程中,不般不需要开发servlet,不用构建URL。一般情况下只要使用

  Tapestry提供的现有组件,并配置相应的listener参数。通过listener参数指定的调用方法就可以访问后

  端系统。

     Tapestry开发的应用由Page组成,即Web页面。Page由组件组成,而组件又是由更小的组件组成。

  对Tapestry而言,Page是特殊的组件,Page组件中不能再有Page组件。对于单个Page而言,各个组件的名字

  都不相同,通过组件的ID能唯一标识组件。通过使用组件ID便形成了Tapestry组件对象模型。

     通常Tapestry应用是由若干个页面组成,每个页面都是用Tapestry组件开发的。而且组件一般都存在

  已经定义好的参数类型,通过Web页面能够提供相应的参数值。请注意,这里的参数类型同javaBean中的

  参数类型有所区别。对于javaBean而言,它的参数是单向的,即开发者只能传入值,而不能传出参数。对于

  Tapestry来说,方法参数是双向的,可以读出,也可以写入。

     在Web应用中,处理表单数据是最为基础,重要的内容。在Tapestry应用中,当用户提交表单时,处于

  表单中的组件会从HTTP查询参数中获得值,并把这些值转换为合适的类型,然后更新对象的属性。这个

  过程在Tapestry中称为Rewind过程。当Tapestry将页面传给浏览器时,称之为Tapestry Render过程。

     Tapestry页面上的参数是用OGNL语言来表达的。

     Tapestry中存在Engine、Visit、Global这几个重要的概念。Global相当于JSP中的Application范围。

     Visit是作为Engine的属性而存在的,而Engine又是存储在HttpSession中,因此Visit也是存储在

 HttpSession中。

     Visit和Engine都是在Tapestry的.application文件中配置的。比如:

     <application name="XCharge" engine-class="org.apache.tapestry.engine.BaseEngine">

        <description>add a description</description>

        <property name="org.apache.tapestry.visit-class" value="charge.Visit"/>

     </application>

继续阅读