技术开发 频道

Tapestry PK JSF, 谁将成功晋级J2EE5 Web层框架?



二、       Web开发

1. JSF

JSFServlet API进行了封装,采用JSP的技术作为其表现层技术。程序员在使用组件做JSF应用程序的开发时基本上不需要直接操作HttpRequestHttpResponse,并且对用户输入验证、手机等其它设备(通过RendererKit)、多语言(通过资源文件方式)和换肤(通过RendererKit)的支持都有相应的封装,可以方便的实现。目前开源的组件库有MyFaces,ADF等可以使用,其中有些组件内置对Ajax的支持。

开发工具方面,IBMWebSphere StudioOracleJDeveloper 10gFaceIDEIDEJSF应用开发提供可视化编辑支持。

在大多数情况下,Web应用并不需要编写适应于不同设备的程序。尽管JSF设计工具提供了简单的图形化方法来构建和预览JSF应用,但是在一个开发中,页面设计人员更多的是喜欢用流行的HTML设计工具来编写和预览页面,这就发生了一个冲突,即只有将更多的页面工作转移到java程序员身上,因为一个页面设计人员通常情况下是不乐意去操作JSF设计工具的。

JSF开发者一直在寻找一种解决这些问题的方法。JSF技术设计良好的扩展体系,使得这成为可能,其中一个技术浮现出来,那就是表现层控制器。一个非常有前途的表现层控制器的实现就是Facelets。由Java.net创建开放源代码项目。Facelets的灵感就来源于Tapestry的模板模型,这使得JSF不再依赖于JSP技术。Facelets允许开发者创建Tapestry风格的标签。

2. Tapestry

Tapestry把一个应用程序分成一系列的页面。每一个页面由Tapestry的组件组成。组件本身也许是由组件构成。Tapestry页面本身就是组件,只是有特殊用处的组件。所有的Tapestry的组件可以成为其他组件的容器。Tapestry页面,和许多用户定义的组件一样,有一个模板,由一个特殊的HTML定义了一些静态的和动态的组件位置,同时有标签表明那些内嵌的组件是活跃的。组件不需要有标签。Tapestry组件参数也许是双向的,一个组件可以读取一个参数来获得一个值,或者写一个参数来设置一个值。

其他的组件。如FormForm控制组件(TextField, PropertySelection, Checkbox等等)使得HTML中的Form的实现变得容易。当这样的组件被显示的时候,他们从程序对象中读取属性值来提供默认值。当Form被提交的时候,Form中的组件读取http的查询参数,转换数值为合适的类型并且更新程序对象的属性。

对于大多数的Tapestry应用来说,Tapestry的表现层模板看起来就是一个只有简单规则的HTML,只不过其中加入了一些Tapestry的属性。Tapestry的模板不仅仅可以用HTML作为载体,它也支持其他的一些标记语言,Tapestry标签是具有良好格式的标签,即必须成对出现。Tapestry模板技术支持的标记语言典型的就是HTML以及用于无线应用的WML。其最大的一个特点就是,可脱离Servlet容器而直接预览。

组件和页面的开发过程完全一致,都是由模板、Page/Component classSpecification文件组成。IDE方面目前有开源社区开发的Eclipse插件SpindleTapestry Palette可用,对开发效率有一定的提升。

0
相关文章