jakarta tapestry是一个开源的java web应用框架.你或许会说:"大同小异的东西罢了."多数 【程序编程相关:SQL语法查询文档】
简介 【推荐阅读:j2me getProperty】
tapestry是一个基于控件的框架以致于用它开发web应用类似开发传统的gui应用.你用tapestry开发web应用时你无需关注以操作为中心的(operation-centric) servlet api.引用tapestry网站上的一句话:"tapestry用对象(objects),方法(methods),属性(properties)替代以往的urls与查询参数, 重新诠释web应用开发.tapestry 3.0即将发布,它有大量的改进与新的特性. 【扩展信息:使用属性和反射过渡从数据存取层到业务物件】
情况下,我同意你的观点,然而,只要花上些许时间研究一下,你会发现tapestry跟别的框架大为不同,它是值得严肃对待的.
tapestry的目标
简单性
tapestry应用与传统的servlet应用相比代码量更少.大多数传统的servlet应用包含如下厌烦与
重复的任务:解析查询参数,处理httpsession对象,构建urls.tapestry消除了传统servelt应用中许多无趣的"衔接"代码("plumbing" code)使开发者把精力集中到应用逻辑上来.
一致性
tapestry为开发web应用的页面提供了一致的方式.这样有助于消除传统servlet应用开发中臆测.由于所有tapestry应用中的页面都是用相同的可复用的控件组织而成,所以工作方式是相似的.
效率
tapestr应用拥有高度的可升级性,它利用缓存与对象池使每个请求的处理时间最小化.tapestry应用拥有跟传统servlet应用相仿的性能.
错误反馈
任何开发过servlet/jsp应用的人毫无质疑有类似经历:为了找出web.xml文件有什么错误,不得不花费大量时间察看浏览器中的堆栈信息.tapestry拥有优秀的错误报告方式,最值得一提的是它会指出哪个文件以及那一行导致了错误.
与struts比较
既然apache struts可能是当今应用最广泛的web应用框架,拿tapestry与它比较是唯一公平的.以下是一些观察比较,它们来源于为这篇文章开发的几个简单的tapestry应用与为几个struts工程的工作经历.
struts的优点
1 一个servlet/jsp开发者熟悉struts无需太久.然而tapestry的学习曲线会长一点,因为它与流行的web应用框架不太相同 .
2 struts在java社区里被广泛接受与使用.为你的项目找一个好的struts开发人员并非难事,tapestry近来在开发者社区里 赢得一些关注,然而仍有许多java老手不知道tapestry为何物.
3 既然struts被如此广泛的使用,所以有很多struts资源可供参考.相比大多数开源软件,tapestry拥有非常可观的资源与文档,但跟struts相比仍有差距.
tapestry的优点
1 你开发一个tapestry应用无需关注servlet api,你也无须为你的servlet应用写一些典型的"衔接"代码.虽然struts简化了工作,然而servlet api 仍是你需面对的.
2 tapestry的页面模板除了几个特别属性与标识就是一个标准的html文件. 如果你是一个开发小组中的html设计高手,然而你不懂java或jsp,这就给你带来很大方便.
3 因为tapestry页面是标准的html,所以可以用html所见即所得(wysiwyg)编辑器编辑与预览该页.当一个页需要修改它的外观并不需要通知服务器让它重新编译jsp.
4 tapestry不需要一个至高的,整个应用范围的配置文件.tapestry应用中的每一页是独立的,改变一页不会影响开发其他 页面的开发者,因为并没有一个配置文件把所有页面的浏览粘连在一起.
5 tapestry拥有极好的错误报告.如果你在一个页的模板或页面规范犯了一个错误,tapestry会指出导致错误的行号.
6 用tapestry开发是种乐趣.这样说听上去似乎老调,然而用tapestry开发一个web应用相比应用其他流行的框架更为自然有趣.用tapestry开发是应用了一种基于控件的架构,与开发传统的gui应用非常相似.
tapestry 架构
tapestry框架是标准servlet api的一种扩展.它需要j2sdk1.2或更高版本的j2sdk与一个与servlet api 2.2(或更高)兼容的应用服务器/servlet容器.
一个tapestry应用由许多拥有唯一名称的页面组成.一个页面由一个模板与一些可复用的控件构成.模板由标准的html标签与一些额外的属性与标签构成,这些额外的属性与标签是为了告诉tapestry框架这个页面的那些部分是由tapestry控件组成.
简单的tapestry应用
为了最好的描述构建一个tapestry页面的方方面面,我们可以看看这个pig latin翻译器应用的代码.这个应用只有一个页面,在这页里输入一个text值把它翻译成pig latin,然后把翻译好的值显示给用户.
在tapestry应用中每个页由3个部分组成:一个html模板,一个页面规范文件,一个java类.
这里有这个页面屏幕抓图:
页面模板由标准的html标签与一些额外的属性与标签构成,这些额外的属性与标签是为了告诉tapestry框架这个页面的那些部分是由tapestry控件组成.页面模板存放在web应用的根context目录下.通常,tapestry在启动时会寻找与呈现一个名叫"home"的页.虽然我们可以改变这种行为,但依照tapestry的惯例会更简单.
home.html
<html> <head> <title>tapestry pig latin translator</title> </head> <body> <h1>pig latin translator</h1> <form jwcid="@form"① listener="ognl:listeners.submit"②> <table border="1"> <tr> <td>value to translate:</td> <td> ... 下一页