用户操作
[即时聊天] [发私信] [加为好友]
郑云洲ID:donkeyzheng
228609次访问,排名285好友0人,关注者1
donkeyzheng的文章
原创 182 篇
翻译 0 篇
转载 47 篇
评论 77 篇
最近评论
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
jiaoshi_2008:谢谢
zhngling:写的不错,可惜没有图
hxl268:2500年芝诺悖论揭示:不能用数定量描述运动
黄小宁
通讯:广州市华南师大南区9-303第二信箱 邮编510631
几何常识:沿数轴运动的动点由位置b处运动至a处必遍经两处之间的一切位置之后才能到达a处,不认识2处之间的一切位置的坐标数就根本不能真正用数表达运动。
“两个质点要重合为一个点,必首先无间隔地紧挨在一起,正如子弹要进入人体必首先与人紧挨……
pastorfuture:非常有用,非常非常感谢,找了好久了....,一直都没有办法dtree的连接到rightFrame...
文章分类
收藏
相册
美女
网站链接
a very good blog
blog-我思故我强
eclipse-API 函数
eclipse-SWT资源
Eclipse-下载
hibernate-官方网站
html-教程与代码
html-网页特效
html-蓝色理想
html-设计笔记
html-语言教程
j2me-开发网
JavaScript-参考手册
Javascript-基础教程
javascript-好玩的jscript
java-例子
java-加瓦家
java-研究文集
java-解决之道
java-资源网
java-项目
Linux-debian
linux-内核-v2.6
Portal-中国Gnome
test-软件测试
Windows-进程知识
下载-Apache软件基地
下载-ftp
下载-JR
下载-MSDN资源库
下载-netYi电子书
下载-PUDN源码
下载-SUN技术社区
下载-中华书库
下载-电子书籍
开源-java
开源-object联盟
开源-sourceforge
开源-啄木鸟
开源-知识共享
文档-Huihoo
新闻-CNET科技资讯网
新闻-DoNews
新闻-IT时代周刊
知识-msdn之测试
知识-学新网
知识-项目管理
综合-CSDN
综合-IBM 开发者
综合-IT168
综合-Sawin系统分析
综合-sun开发者网络
综合-中国IT实验室
综合-编程者乐园
论坛-Huihoo
论坛-Java视线
论坛-Nokia
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 Struts,Tapestry,JSF三种MVC架构比较收藏

新一篇: 取代JSP的新技术-tapestry | 旧一篇: 影响中国软件开发的20人

抽象一下表现层框架应有的技术架构,下图可以说所有表现层框架技术都必须实现的功能架构图:

  在上图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 接口

选择tapestry有如下几大优点:
1、最彻底的MVC开发框架,页面代码全部由HTML标准标签组成,页面美工人员无须了解特别的标签定义。
2、可重用组件开发节省开发资源,一句话:越开发越轻松
3、优秀的页面流转开发。传统方式都是基于URL实现激活页面流转,而tapstry除了此方式,你还可象开发普通java类一样实现page页面流,更
重要的是,还可由此实现页面类的复用。
4、丰富的组件资源。除了官方维护的资源外,还可找到一大堆的tapestry组件库。
5、超强的扩展性。tapestry是一个真正的开放性架构,说白了,你觉得哪个服务不爽,你就可写个替代它。
6、生命力超强,不断的自我更新、发展。tapestry4.0与3.0相比简直就是另一个飞跃,如支持jdk1.5的Annotations,仅这点开源产品中目前
还只看到一个hibernate;支持portlet JSR-168,又一个顺应潮流的web开发支持。规划中的4.1将支持页面静态化,这不正是众多开发人员的
另个期待吗?
7、tapestry的开发人员稳定。不是一个两个人在那里单打独斗,而是有一群人在开发和支持tapestry的进程。
8、tapestry技术成熟吗?基于tapestry的软件和大网站已经很多了,
国外的:软件如SeaView内容管理系统、WidenTM Digital Asset Management System
网站大的如:http://www.nhl.com/http://www.theserverside.com/https://merchant.shopping.com/enroll/apphttp://www.identitytheft911.com/home.htmhttp://admissions.chicagogsb.edu/admissions/app
国内的:软件如http://www.onetsoft.com ,网站如:http://love.9618.com.cn/dating/apphttp://dbi.lib.ntu.edu.tw/libraryList/http://www.cdcin.com/http://www.xtcin.com/http://www.xnjs.com/

Struts组件模型缺点

  Struts组件编程必须限定在Action/ActionForm/JSP这三个框框中做文章,难度相对比较大,而Tapestry/JSF则没有太多这些技术框框限制,两者在组件编程方面更让编程者自由一些,方便一些,这也是组件型框架的优势吧。

三者概述

     JSF在很大程度上类似Struts,而不是类似Tapestry,可以说是一种Struts 2.0,都是采取标签库+组件的形式,只是JSF的组件概念没有象Struts那样必须继承ActionForm的限制;JSF在事件粒度上要细腻,不象Struts那样,一个表单一个事件,JSF可以细化到表单中的每个字段上。

  JSF只有在组件和事件机制这个概念上类似Tapestry,但是不似Tapestry那样是一个完全组件的框架,所以,如果你做一个对页面要求灵活度相当高的系统,选用Tapestry是第一考虑。

  Struts/JSF则适合在一般的数据页面录入的系统中,对于Struts和JSF的选用,我目前个人观点是:如果你是一个新的系统,可以直接从JSF开始;如果你已经使用Struts,不必转换,如果需要切换,可以将JSF和Tapestry一起考虑。

  另外,JSF/Tapestry不只是支持Html,也支持多种客户端语言如WML或XUI等。

  这三者之间关系:如果说Struts是左派;那Tapestry则是右派;而JSF则是中间派,中庸主义是SUN联盟的一贯策略。

发表于 @ 2006年05月08日 14:41:00|评论(loading...)|编辑

新一篇: 取代JSP的新技术-tapestry | 旧一篇: 影响中国软件开发的20人

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © rinso