当前位置: 首页 > 工具软件 > Tapestry > 使用案例 >

Tapestry之旅

公冶兴文
2023-12-01

空闲时间不是太多,对Tapestry也是刚刚开始学习,翻译质量也不是太高,请大家多多批评指正!(龙)

介绍

欢迎来到Tapestry!本教程专为创建Tapestry Web应用的人而写。不管您有无Tapestry的早期版本经验或者其它Web框架,都无关紧要。实际上,某种程度上来讲,通常你懂的Web应用开发知识越少,你越能创造好的Web应用。因此,忘掉以往的知识来学习吧!不过,HTML、XML的基本知识以及基本的Java语言特性(包括注解)是需要你必备的知识。

Web应用开发的挑战
如果你曾经使用Servlets和JSP,或者Struts来开发Web应用,那么你曾经肯定很苦。受过那么多的苦,也许你根本不知道你所处的环境有多苦!比如:不安全的网络,不知道你的应用架构的Struts 和 Servlet API,以及不知道如何更好的将它们适应在一起。在浏览器中,任何的一个URL都可以是一个触发事件或者转发到任意页面(JSP通常这样做)来提供HTML响应。做为一个程序员,你必须每天面对这些永无止境的,琐碎但又重要的代码片段。这些事件、页面和存在于HttpSession或者HttpServletRequest中属性的名称代步什么意义呢?数据的事务、缓存以及安全性能如何来保证(你是不是必须用CV大法来保证代码执行呢)?你的项目包结构该如何组织好呢(哪里放接口类?那里放实体类?如何与别人共享你应用的部分代码呢?)
最重要的是,当前你最不想面对的传统问题是:多线程编程。当你定义一个数据对象或者操做该对象时,你要会来看<<面向对象编程101>>?当你创建创建传统的Web应用时,你必须忘掉这篇课程,因为Web应用是多线程的。一个应用可以为每个用户处理N多的请求,而每个请求都在自己的线程里,每个线程还都共享一些额外的数据。然而,你不能保存数据到对象(比如Servlet和Struts事件)只是因为无论你存的是什么都会被其它用户实例的请求覆盖。更糟糕的是,你的对象每次只能操作一次:doGet()或doPost()。
与此同时,当用户点击链接时,你的工作就围绕在如何把存在于对象的数据打包并放入URL的请求参数里,这样的结果是你需要写更多的代码来把数据解析回来。为了保证Servlet容器或是Struts框架的数据改变,还不能忘记修改XML文件。 一般来说,在修改代码后的,你必须重新编译,重新部署,重新启动你的项目。
以上这些你有熟悉的问题吗?也许,你不熟悉的Tapestry将会避免这些问题。

Tapestry的方式

Tapestry使用的是一种不同的模式:结构化并且有组织的页面,基于组件的页面。所有的文件都有特殊的命名规范。一旦你知道了页面文件的名字,你也就知道了该页面Java类的位置,页面模板的位置以及页面的整体结构。Tapestry让这些成为了规范,也保证了应用的运行。
在下面的页面中,我们会看到Tapestry允许你以对象的角度编程。你几乎看不到任何的Tapestry类,外部只有一些JAVA注解。如果你需要存储数据,不要在HttpServletRequest或HttpSession中存储,只需要在类里作为属性存储即可。如果你需要执行一些代码,只需要简单的注解或者遵守Tapestry规范,方法甚至不需要是public。
Tapestry 可以使你免受Web应用开发多线程的痛苦。Tapestry在管理页面生命周期以及页面组件、页面域组件上都是线程安全的。你的页面和组件类看起来可以想标准POJO类一样简单明了。
Tapestry 始于两千年一月,至今已超过15年。Tapestry 致力于最好的方式来构建灵活,多变,强壮,内联以及Ajax的应用。Tapestry 5 呈现出了一种完全新型的编程设计(对比于Tapestry 4)来简化Tapestry编程方式,在扩展了Tapestry的影响力同时,也提示了自己的性能。

获取源码

经管你可能不需要,本教程的源码开源可在GitHub上下载查看
是时候开始了

好了,背景介绍完了。现在开始学习Tapestry吧:依赖包,工具和插件


 类似资料: