Tapestry和Wicket的比较

需要快速创建Web应用程序?了解一下这两个组件框架。

Tapestry 和 Wicket 被宣扬为流行的基于组件的现代 Web 框架。与 Model 2 架构框架 Struts 或 Spring MVC 不同,Tapestry 和 Wicket 为 Web 开发过程提供了一种全新的方式,即以看待基于 GUI 的独立应用程序相同的方式来考虑 Web 应用程序及其行为和组件交互。

典型的基于组件的应用程序表示一个页面集合,它由一套组件组成。而这些组件可能由更小的组件组装而成。用户交互是一种特定的组件事件。这是与基于 MVC 的应用程序的主要区别,后者的交互入口点是一个 servlet 或一个具有一般属性的操作(例如 URLs 及其参数、表单等)。

使用基于组件的框架的开发人员通过实现事件驱动模型来关注组件和组件交互。Servles、HTTP 会话和其他来自 servlet API 的实体被移动到更低的级别并且从来不会被直接使用。然而,通过声明组件及其属性,开发人员需要管理服务器端的状态,这种状态可能是会话持久性的。

与 JSF 或使用 JSP 和 Velocity 标记的 WebWorks 不同,Tapestry 和 Wicket 都使用它们自己的模板系统,允许创建完全符合 HTML 标准的 HTML 模板。这使我们可以清晰地实现关注点分离:从事 GUI 的 Web 设计者不用考虑应用程序是在何种平台之上编写;同样,实现组件的应用程序的开发人员不用考虑页面的最终设计是否使用 stub 元素进行调试和测试。Tapestry 和 Wicket 都支持这种分离。

Tapestry 一览

目前,Tapestry V4.1 是该项目的正式发行版。V5.0 目前正处于积极开发中,从团队开始从头编写 Tapestry 到撰写本文之际,已有 18 个月有余。尽管 V5.0 还没有公开发布,可以肯定地说它与先前的版本完全不同,因为它不是向后兼容的。由于不能确定 V5.0 的状态,我们主要侧重于 V4.1。

Tapestry V4.1 主要基于 HiveMind 微内核,这是控制反转(Inversion-of-Control)容器的一个严格表示。所有的 Tapestry 服务都是使用 HiveMind 注册的。

一个典型的 Tapestry 组件由以下部分组装而成:一个组件说明(一个 XML 描述符)、组件逻辑(Java 编程语言的一部分)、UI 布局(一个 HTML 模块)。

Wicket 一览

Wicket 架构的核心是组件 类,所有组件和标记容器对其进行扩展。组件主要负责处理其模型 — IModel 界面的一个实现。模型表示与组件实例相关的任何类型的数据并定义其行为。IModel 中一个著名的实现是 LoadableDetachableModel,它允许传递临时数据、在呈现组件之前加载数据、在不需要时将其移除(撤销),从而减少了 Wicket 会话的大小。

Wicket 页面也是组件,如果具有状态,则它们的状态将保存在 Wicket 会话中。页面可以启用版本,因此每当页面状态发生改变(查看页面、修改其组件状态等)时,将连同一个递增的版本编号进行保存。

开发过程

本节说明在 Tapestry 和 Wicket 中如何完成典型的任务。注意下面的代码片段大多数取自较大的代码源,比如组件和页面。因此,它们可能包含此处没有描述的一些业务方法的调用。

支持的数据类型

这两个框架都支持 Java 数据类型。Tapestry 采用对象图导航语言(Object-Graph Navigation Language,OGNL)。它是一种获取和设置 Java 对象属性的表达式语言。Wicket 用它独有的机制进行数据绑定。有 两 种 方便的实现可以动态检索和更新对象属性:PropertyModel 和 CompoundPropertyModel。

我们来查看一个应用 float 类型的示例。在 Tapestry 中,按照以下方式指定一个具有 float 值的文本字段:

清单 1. Tapestry 代码示例

<component id="weight" type="TextField">
     <binding name="value" value="ognl:weight"/>
     <binding name="translator" value="translator:number,pattern=#.#"/>
     <binding name="displayName" value="literal:Weight"/>
   </component>

时间: 2024-11-06 02:19:01

Tapestry和Wicket的比较的相关文章

Java Web 框架的“甜点”

web 这是一篇很有趣的文档,所以摘要一下,其实类似阅读笔记,好像是3/25发布的:不知怎么翻译Sweet Spots,难道翻译为甜处.甜头.蜜点.蜜穴? 本文基于对以下人的采访(最后两位的看法独到还是自己看吧!):JSF             Jacob HookomRIFE            Geert BevinSeam            Gavin KingSpring MVC      Rob HarropSpring Web Flow Rob Harrop and Keit

各种Java Web层框架的优缺点

现在java web框架非常多,林林总总,让很多人不知道选择那个好:JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket,他们都是各有千秋,面对各种问题,八仙过海,各显神通. 这里就小话一下他们的优缺点. JSF优点:Java EE标准,这意味着有很大的市场需求和更多的工作机会上手快速并且相对容易有大量可用的组件库缺点:大量的JSP标签对REST和安全支持不好没有一个统一的实现.既有SUN的实现,又有Apache的实现--MyFaces.国内的Opera

为什么又要造一个叫 Latke 的轮子

框架 使用框架的好处很多,它规范了我们的开发方式,减少了出错的可能性,让我们可以更快地完成开发目标,后续维护也可以有章可循:使用框架的弊端也很明显,它束缚了我们,离开熟悉的框架进行开发我们可能会手足无措,它让我们身陷其中.但无论如何,我们是离不开框架的,多认识几种框架是没错的,Java Web 领域更是如此(选择很多,同时也很少). 到目前为止,我所认识的框架无一不例外都是以 class 作为实体类型的,为什么会这样?为什么不能以其他形式(例如 map)作为实体载体?我觉得这些问题很值得讨论(虽

Liferay Plugin SDK开发与Ext开发的选择

Liferay有两种服务: 1)internal services      即Liferay核心服务,比如portal-impl.jar 2)external services     即Portal的API,比如portal-kernel.jar以及portal-service.jar Liferay的internal服务更新频繁,升级Liferay版本时尤其要注意:而Liferay的external服务则相当稳定. Ext开发可以同时使用internal服务和external服务.且Lif

表现层框架Struts/Tapestry/JSF比较

js|比较 Struts/Tapestry/JSF是目前J2EE表现层新老组合的框架技术.从诞生时间上看,Struts应该比较早,使用得非常广泛,Tapestry 3.0逐渐引起广泛的重视,正当Tapestry即将大显身手时期,SUN推出JSF标准技术,虽然JSF一开始推出尚不成熟,留出了一段空白期,但是随着JSF1.1标准推出,JSF开始正面出击,粉面隆重登场了. 其实,JSF和Tapestry也并不是那种头碰头的相同竞争性技术,两者还是各有侧重点的,不过比较细微,但是这种细微点在实现一个大工

取代JSP的新技术-tapestry

js 在如今的web开发中,基于java的应用越来越多.在这其中,servlet又扮演着十分重要的角色.本系列文章就是要介绍一些辅助进行servlet开发的工具,让大家进行开发时,有多种技术可供选择.servlet技术无疑是一种优秀的技术,java服务器端技术大都基于servlet技术.但这种技术也有其自身的不足,例如:表示层(html代码)与代码混在一起,可重用性不高.SUN于是提出了jsp技术,jsp也是基于servlet的一种技术,使用它你可以在html中嵌入java代码.jsp在serv

Tapestry 5单元测试例子

我们另一个方面可以测试模板文件,模板文件就是HTML文件,在HTML文件中可能涉及到测试: *页面字段显示测试 *测试link动作 *测试表单提交form 1. 页面字段显示测试 在我们第1章的Start模板主要是断言显示"Hello World!"字符串.测试程序如清单2.5所示. package com.kingbegin.web.pages; import org.apache.tapestry.dom.Document; import org.apache.tapestry.t

创建并扩展Apache Wicket Web应用

简介 Apache Wicket是一个功能强大.基于组件的轻量级Web应用框架,能将展现和业务逻辑很好地分离开来.你能用它创建易于测试.调试和支持的高质量Web 2.0应用.假设其他团队交付了一个基于Wicket的应用,你必须扩展该应用,但又不能修改他们的代码:或者你必须要交付一个模块化的Web应用,能让其他团队很容易地扩展和定制.本文介绍的正是如何在不引入多余源代码.标记和配置的情况下解决此问题.我们用maven-war-plugin合并项目,用wicketstuff-annotations动

Wicket Web框架简介

您 web 应用程序中的每个窗口小部件都是在一个 Java 类中创建的,并呈现在一个 HTML 页中.该 Java 类与 HTML 页必须同名并且存在于同一个源结构中.它们通过一个 Wicket 标识符相互链接.稍后 将向您展示 IDE 如何支持基于组件的应用程序开发以便您能快速高效的创建可重用组件,这些可重用组 件将帮助您轻松实现 web 应用程序外观的一致性. 本教程所需要的软件 开始之前,需要在您 的计算机中下载并安装以下软件: NetBeans IDE 6.0 Web & Java EE