Tapestry 教程(一)

介绍

欢迎来到 Tapestry 的世界!html

这篇教程帮助人们来建立基于 Tapestry 的 web 应用程序。你是否有过使用 Tapestry 早期版本或者其它 web 框架的经历,这一点并不重要。事实上,从某些立场来看,对于通常的 web 开发了解的越少,你就能学得更好……由于那样你要忘掉的就不太多啦!git

你确实对 HTML 有着较好的理解,对 XML 也只知其一;不知其二,对于基础的 Java 语言特性,包括注解(Annotation)也有一个较好的了解。github

Web 开发的挑战

若是你曾经用 servlet 和 JSP,或者利用 Struts 来开发过 web 应用程序,那你应该已经很容易感到有许多的麻烦。如此多的麻烦,你甚至可能没有理解你所在的可怕处境!这里都是些没有安全网络的环境;Struts 和 Servlet API 并不能告诉你应用程序怎么构建法,或者如何把不一样的块组合到一块儿。任何URL均可以是一个action,而任何action均可以被指向任何视图,(使用一个JSP)来向网页浏览器提供一个HTML的响应。麻烦就是你做为一个开发者须要做出的许多细小琐碎,但是又很重要的决定,(还的就这些问题同你团队的其它成员扯来扯去)。对于actionpage以及存储在HttpSession或者HttpServletRequest中的attribute,它们的命名约定是什么?在哪儿实现数据库事务、缓存和安全这些东西(还有你是否是还得复制一些Java或者XML来让什么东西能管用)?你的包是如何组织的……用户接口类该放哪儿……数据和实体对象该放哪儿?你如何将一个地方的代码共享给应用程序的其它部分?web

最糟糕的是,传统的方法把你最不想碰的问题都扔给了你:多线程编程。记得面向对象编程基础课中一个对象是被定义成一堆数据以及在这些数据上所进行的操做吗?当你要构建一个传统的web应用程序时就这忘掉这一课,由于web应用程序就是多线程的。一台应用程序服务器能够处理数十或者数百个来自我的用户的请求,每个请求都有属于它们本身的线程,而每个都用的是相同的对象。忽然之间,你就没法在一个对象(一个servlet或者一个Struts Action中)存储数据了,由于无论你为一个用户存的是什么数据,数据都会当即被另外的某个用户覆盖掉。数据库

糟糕的是,你的每一个对象都只有一个操做:doGet()或者doPost()apache

同时,你的绝大部分平常工做都涉及到决定如何去打包已经存在于一个特定Java对象的某些数据,还有把那些数据折腾到一个URL的查询参数中,那样若是用户点击了特定的连接,你才能写更多的代码来将其转换回去。还有就是不能忘了要编辑一对的XML文件来让servlet容器,或者Struts框架知道你的这些决定。编程

开发玩笑,基本上在你作出了任何修改以后,都得记得要从新构建,从新部署并重启。有什么令你感到熟悉的吗?那极可能会让你感激一个你并不怎么熟悉东西:Tapestry浏览器

Tapestry 的方式

Tapestry使用了一个很是不一样的模型:一个有组织有架构的page,还有page中的组件。每样都有一个(你来指定的)特殊名称。一旦你知道了page的名称,你就知道了对应这个pageJava代码的位置,还有对应这个page的模板的位置,以及整个page的结构。Tapestry也都知道,且能让全部的东西发挥做用缓存

如咱们将会在下面的一些page中所看到的,Tapestry让你能在针对你的对象编写代码。除了几个Java注解以外,你将不多会看到任何Tapestry类。若是你要存储什么信息,就把它存储在类的属性域中,而不是HttpServletResponse或者HttpSession中。若是你想要执行什么代码,它就只会是一个简单的注解或者是以使Tapestry会在正确的时间,使用正确的数据调用到的约定来命名的方法。安全

Tapestry也使你能免受web应用程序开发的大多数多线程问题的困扰。Tapestry以线程安全的方式管理page和组件对象、以及page和组件的属性域的生命周期。你的page和组件对象看起来总像是简单的标准POJO

Tapestry起步于20001月,到如今它已经影响了整个Tapestry社区超过15年。Tapestrytable带来了全部有关于构建可扩展、可维护、稳定、国际化的,以及可使用Ajax的应用程序的最佳方法,这些方面的经验。Tapestry 5基于一个(不一样于Tapestry 4的)全新的代码库,在简化Tapestry编码模型的同时扩展Tapestry能力并提高其性能。

获取教程源代码

尽管你可能不会须要。这个教程的源代码都在GitHub上。

是时候开始了

好了,背景说得够多了。如今让我开始教程的学习吧:依赖,工具和插件

相关文章
相关标签/搜索