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

2016-02-19 14:12 2 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的表现层框架Struts/Tapestry/JSF架构比较,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

      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表单提交和有参数的链接

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/) StrutsTapestry3.0JSF在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组件编程模型

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

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

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

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

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

  1.使用Tiles, 不同流程输出到同一个页面的不同区域。是一种并行处理方式。

  2. 对多个流程首尾相连,第一Action forward结果是第二个Action,最后输出一个Jsp,在这个jsp中就可以使用前面多个流程的多个ActionForm了,这属于串行方式。

QQRead.com 推出数据恢复指南教程 数据恢复指南教程 数据恢复故障解析常用数据恢复方案硬盘数据恢复教程 数据保护方法数据恢复软件专业数据恢复服务指南

  

来源:https://www.tulaoshi.com/n/20160219/1606430.html

延伸阅读
什么是异常? 异常(exception)应该是异常事件(exceptional event)的缩写。 异常定义:异常是一个在程序执行期间发生的事件,它中断正在执行的程序的正常的指令流。 当在一个方法中发生错误的时候,这个方法创建一个对象,并且把它传递给运行时系统。这个对象被叫做异常对象,它包含了有关错误的信息,这些信息包括错...
框架构图如何拍摄   很多时候,摄影师只有一次拍到好相片的机会,因此一定要准备充足,在按下快门前已经知道自己想拍什么,而不是靠运气来拍到好相片。 Photograph by Sajad Rafeeq (一) 好的相片要提前准备好,然后静待时机 单看相片你可能不知道,摄影师Sajad在拍摄这张相片时早已经到达了场地,把构图、测光做好,然...
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 2、视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3、控制器(...
标签: Web开发
提要 实时的数据校验是AJAX技术的重要优点之一,Struts校验框架通过加入这种技术进一步丰富了其MVC,从而使得Web应用程序的开发效果更接近于桌面应用程序。 一、 引言 校验框架的根本目的是实现域校验。在Web应用程序中有许多方法可以实现域校验,总体上可以分为两类:服务器端和客户端。其中,Struts校验框架是适合于基于Java的...
标签: Web开发
设计模式可以帮助用户在更高层次上抽象细节,更好地理解体系结构。如果比较熟悉 GoF 设计模式和 JavaServer Faces (JSF) 框架,本文可以帮助您洞察 JSF 框架中使用的设计模式,深入理解其工作原理。 本文探讨了 JSF 框架中使用的设计模式。详细讨论的设计模式包括 Singleton、Model-View-Controller、Factory Method、State、Composite、Deco...

经验教程

868

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部