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框架能够很好地进行处理,使我们得以解脱。

你可能感兴趣的:(数据结构,框架,应用服务器,servlet,tapestry)