`
Lincoln
  • 浏览: 80557 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tapestry学习笔记(2)

阅读更多

3.  Tapestry 的面向组件开发方式

Tapestry面向组件的开发方式是传统开发方式的变革。什么是面向组件呢?这就像搭积木一样。Tapestry将一个应用程序分成很多个页面,而一个页面又是由若干组件组成的,我们不需要去关心任何Servlet细节,也不需要关心如何生成URLURL的结构,Tapestry会为我们自动生成合适的URL跳转叶面或者传递参数。

Tapestry框架中,页面有HTML模板,页面规范和页面类组成,而组件由HTML模板,组件规范和组件类组成。叶面的HTML模板和组件的HTML模板都是在原始的HTML静态页面中嵌入少量的jwcid属性标签构成,页面类和组件类都是抽象或非抽象的Java类,并最终继承于Tapestryorg..apache.tapestry.AbstractComponent类。因此,页面对于Tapestry来说,是一种特殊的组件。那么一个使用Tapestry框架的Web应用程序,实际上就是一堆Tapestry组件的集合。

页面的所有业务逻辑都放在页面类中,页面与页面的关系是Java对象之间的关系。叶面类的逻辑不会影响到组件类的逻辑,页面与组件通过组件参数联系在一起,组件参数是页面向组件或者组件向页面传递数据的媒介。组件的所有逻辑都放在组件类中。因此,组件的逻辑实现完全脱离页面的束缚。

  Tapestry组件是一个“黑盒子”,用于相应HTTP请求,并表现响应。在调用Tapestry组件的时候,我们根本就不需要去关心这个组件是如何实现的。我们面对的是组件的参数,只要向组件传递合适的数据,那么组件就会实现我们预期的功能。

页面类和组件类都是Java类,实现页面逻辑或者组件逻辑的过程不会影响到页面或组件的HTML模板。因此,Java程序员能够和美工人员实现完全独立的分工。

  使用Tapestry框架来开发应用程序,就如同我们组装一台电脑。我们只是关心CPU的性能如何,内存多大。却不会关心CPU是怎样制造的,内存芯片之间如何通信等。如果我们嫌这台电脑运算内存不够,加根内存条就可以了,并不会影响CPU硬盘等已有硬件的工作。同样,从小型的应用程序到各种大型团队开发的几百个页面的大型应用程序,对于Tapestry来说,只不过是页面和组件使用多少的差别。使用Tapestry来开发各种大小应用程序,都能够保持一个协调一致的结构。这种结构一致的特性使得不同开发者在类似的问题上会找到类似的解决办法。我们创建的Tapestry组件能够跨项目使用,那么随着我们开发的应用程序的增多,积累的Tapesty组件就会越多,开发应用程序的效率就会越快。

  Tapestry框架带来了真正的Java Web 应用程序OOP编程。

4.  面向元素VS面向组件——思维方式的变革

      在面向元素的开发方式中,我们的思维是线性的。我们无法将精力集中在应用程序的整体功能实现上。当一个超链接或者一个表单按钮没有达到我们预期目的的时候,我们首先考虑的不是应用程序业务逻辑是否正确实现,而是超链接或表单发送的URL的结构是否正确,并成功映射到指定的Servlet。特别当我们在页面中大量使用JavaScript脚本语言构造URL,或者修改页面中form表单的action属性的时候,分析和维护这样的页面是一场非常可怕的噩梦。

       在面向元素的应用程序中,我们关心URL传递参数所携带的数据,关心Servlet的任何细节,甚至在高并发状态下,我们还必须担心Servlet是否正确地接收URL中传递的数据。

       由于国内Struts框架使用相当广泛,而JSP又是我们学习Web应用程序开发的起步技术。因此,面向元素的开发方式是我们最习惯和最容易实现的开发方式。虽然面向元素开发方式实现起来最容易,但这并不意味着这种开发方式效率最高。由于我们不等不关心很多Servlet底层实现,于是我们不得不重复地编写这些底层代码,当一个页面中有多个action或者Servlet涉及高并发的时候,我们还得非常仔细地分析这些易让人混淆的底层代码。

       Tapestry框架的面向组件思维颠覆了我们的习惯性思维。在面向组件的开发方式中我们不再关注Servlet底层实现,也不再过问URL的结构。我们通过创建页面来构成应用程序,通过在页面中调用组件来实现页面功能。我们不关心页面如何通过URL跳转到另外一个页面,也不关心form表单如何通过URL将数据包装在请求中提交到服务器端。

   在面向组件的开发方式中,我们的思维是块状的,面向对象的思维方式。我们关心如何将用户在登录时输入的用户名和密码。我们关心在用户登录失败时向客户端返回什么样的错误提示信息,却不关心如何将这些错误信息打印到客户端浏览器。

   面向组件的开发方式使我们将注意力集中在页面逻辑实现上,这样就提高了工作效率。对于那些重复而又容易发生错误的底层Servlet代码,Tapestry框架能够很好地进行处理,使我们得以解脱。

分享到:
评论

相关推荐

    Tapestry笔记

    Tapestry的学习笔记,全都是从网上整理的

    tapestry学习入门资料

    强大的tapestry框架的学习入门资料,详细介绍了tapestry的常用开发文档。

    Tapestry 学习文档

    Tapestry~需要学习资料的进来看看 纯英文原版

    tapestry4和5学习资料

    该包包含: Tapestry5最新中文教程.doc tapestry.pdf tapestry开发流程.docx Tapestry开发指南0.8.pdf tapestry用户手册.pdf

    史上最全面Tapestry学习教程

    很不错的tapestry入门手册,安装教程学习后,基本可以熟练使用tapestry,极大提示开发效率。史上最全面Tapestry学习教程,Tapestry学习资料,适合入门

    tapestry学习资料汇总

    本人搜集的tapestry学习资料,压缩后25M左右。其中很多资料很难得。应该说对tapestry开发者有很大帮助。

    Tapestry5.1学习全集多本书整合

    是一本由多本Tapestry资料整合而成。包括一些Tapestry的实例。

    tapestry教程资料文档合集

    发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf 前3章 ---------------------------- tapestry开发流程.docx -------------------...

    深入浅出Tapestry

    使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的先进经验。本书详细介绍了Hivemind框架的原理与应用,使读者不但可以通过Hivemind来重构Tapes 资源太大,传百度网盘...

    Tapestry5.0.16_API文档

    Tapestry5.0.16文档和大家一起学习

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    tapestry官方中文文档

    Tapestry 4 官方文档中文版本,现在中文资料比较少,和大家共享一下

    tapestry 实例

    tapestry 实例tapestry 实例tapestry 实例tapestry 实例

    深入浅出tapestry

    使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的先进经验。, 本书详细介绍了Hivemind框架的原理与应用,使读者不但可以通过Hivemind来重构Tapestry的官方实现,还...

    tapestry3开发指南,带tapestry3所有jar包

    tapestry3开发指南,带tapestry3所有jar包

    Tapestry4开发指南

    Tapestry4开发指南

    深入浅出Tapestry4一书源代码(2)

    Tapestry4 Tapestry4 深入浅出Tapestry4深入浅出Tapestry4深入浅出Tapestry4

    tapestry5.2.6 jar包

    tapestry5.2.6 最新jar包,Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层

    tapestry技术

    tapestry技术 Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得...

Global site tag (gtag.js) - Google Analytics