快速业务通道

表现层框架Struts/Tapestry/JSF比较 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

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

时间:2010-12-10

Struts/Tapestry/JSF是目前J2EE表现层新老组合的框架技术。从诞生时间上 看,Struts应该比较早,使用得非常广泛,Tapestry 3.0逐渐引起广泛的重视 ,正当Tapestry即将大显身手时期,SUN推出JSF标准技术,虽然JSF一开始推出 尚不成熟,留出了一段空白期,但是随着JSF1.1标准推出,JSF开始正面出击, 粉面隆重登场了。

其实,JSF和Tapestry也并不是那种头碰头的相同竞 争性技术,两者还是各有侧重点的,不过比较细微,但是这种细微点在实现一个 大工程时可能带来不同的感受和变化。

首先,我们从一个高度来抽象一下表 现层框架应有的技术架构,下图可以说所有表现层框架技术都必须实现的功能架 构图:

当然,我们不必废话罗嗦MVC模式,MVC模式是基准模式,现在框架技 术已经不必再拼是否是MVC模式了。在上图MVC模式基础上,一个表现层框架无外 乎要实现图中的三个功能:

1.在当前页面能够显示一个组件对象的内容;而 不是象纯JSP那样,需要在Jsp页面写入“调用对象方法”的Java代码 。

2.当用户按下页面的提交按扭或链接后,事件发生,这时应该触发服务器 端并将当前页面的参数提交给服务器。这种机制表现在Form表单提交和有参数的 链接<a href=""></a>

3.从一个页面视图直接跳转 到另外一个页面视图,单纯的导航作用。

我们通过下表来比较这 三种框架 在实现上图各个功能时技术细节,从而得出他们的异同点和偏重点。

Struts  Tapestry3.0 JSF

在View显示的组件要求 组件必须继承 ActionForm

分显式调用和隐式调用

组件必须继承BaseComponent 普通 POJO

无需继承

Managed Bean

组件在View显示粒度 View页面只 能显示与表单对应的ActionForm,配置中Action ActionForm 页面一般只能 1:1:1关系。可将组件嵌入页面任何一行,对使用组件数量无限制。同 Tapestry

页面分区tiles 使用Tiles标签库实现,需要另外tiles- def.xml配置文件 组件有自己的视图页面,通过调用组件即直接实现多个页面 组合。强大自然的页面组合是其特点。通过组件+标签库实现Subview,但如需重 用Layout,还要结合Tiles.

页面跳转 使用标签库html:link中写明目 标URL,URL名称需要对照配置文件的path命名,与组件Action耦合。URL名称是目 标的组件名称,不涉及URL和路径等操作,方便稳固。类似Struts,也需要在配 置文件中查找,与组件分离。

参数传递 使用html:link时传递参数超 过一个以上处理麻烦。直接调用组件,直接赋予参数,没有参数个数限制 参数 分离传递给组件

事件触发 通过表单提交submit激活,不能细化到表 单里字段。能够给于表单每个字段贴一个事件,事件组件必须实现PageListener 接口 同Tapestry,事件组件必须实习ActionListener 接口

表现层框架Struts/Tapestry/JSF比较(2)

时间:2010-12-10

Struts组件编程模型

Struts实现组件编程时有一些复杂 :经常为一个页面中需要引入多个组件而头疼,因为Struts中无法直接引入多个 组件,必须绕一些圈子:

一般分两种情况:如果同一个Action就可以对付这些 组件,那么在这种情况下有两个办法:

1.将这多个组件装入一个ActionForm 中,如使用MapForm等机制;

2.手工将多个组件装入request/session等scope 中,然后根据其名称在jsp中获得。

这两个方法都有缺点: 第一种办法经常 一个ActionForm弄得面目全非,变成一个大杂烩,违反了OO分派封装的原则;第 2种办法其实又回到jsp编程;

第二种情况,如果这些组件必须有预先由不同 的Action来处理,每个组件必须经过Action -->ActionForm流程,在这种情 况下有两种办法:

1.使用Tiles, 不同流程输出到同一个页面的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号