JavaServer Faces 曾经是 J2EE Web 开发中最被看好的技术之一。在 WebSphere Studio 中,JavaServer Faces 已经可以使用了。JavaServer Faces (JSF) 提供了可视化开发 J2EE Web 应用程序新的途径。
这是一个很基本的问题。您能比较一下 JSF 和 Struts 之间各自的优缺点吗。如何了解现在和将来的技术趋势,JSF 如何以及是否将会发展成为相对于 Struts 更出色的技术。另外,WSAD 如果可以使两者不同的话,将在两者的比较中将会充当什么样的角色。
这是近期很热门的一个问题。一般来说,JSF 仍然是相当新的技术,需要时间来完全地成熟。然而,我看到 JSF 已经可以完成 Struts 可以做的任何事,而且做的更多。Struts 并不是来自于强制性的需求。它是开发人员厌烦了一次次的编写相同的逻辑而创造的。JSF 的出现,既是必然的需要也是竞争的结果。
Struts 有以下优点:
Struts 是一个成熟的、被证实了的框架。它已经使用了几年,且被成功部署到许多项目中。WebSphere Application Server 管理控制台就是一个 Struts 应用程序。
Struts 使用 Front Controller 和 Command 模式,可以处理复杂的控制器逻辑。
除了核心的控制器功能以外,它还有很多其他的优点,比如使用 Tiles 布局、说明性(declarative)异常处理以及国际化。
以下是其缺点:
Struts 是非常以 JSP 为中心的,必须使用其他框架来适应其他视图技术。
尽管 Struts 有丰富的标记库,但是它只能帮助进行控制器方面的开发,当您处理关于页面的组件时,它没有任何意义。因此,从视图的角度来看,它没有提供好的工具。
Struts 需要关于 Java™ 的知识。其目的是帮助 Java 开发人员,而不是隐藏 Java。它在对 Web 开发人员隐藏 Java 语言的细节这一方面做的并不好。
ActionForms 被程式化的与 Struts 框架链接。因此,为了降低模型的耦合度,您需要编写传送代码或者在输入时使用工具将数据从 Action Forms 移动到 Model。
JSF 从包括 Struts 的少数框架发展而来。Struts 的创建者,Craig McClanahan,即是 JSF 规范的领导人之一。因此,能看到 Struts 和 JSF 之间的一些相似之处,这并不是偶然的。JSF 的主要目的之一就是使得 J2EE Web 应用程序在 RAD 工具下易于开发。同样地,它也引入了丰富的组件模型。JSF 有如下优点:
JSF 是一个来自 Sun® 的规范,将会被包括在 J2EE 规范的未来版本之中。各主要供应商都保证对 JSF 提供强力支持。
JSF 使用 Page Controller Pattern,因此会对页面密集型应用程序有帮助。相应组件会对来自页面上组件的事件作出响应。
JSF 有一个明确定义的请求生命周期,保证了在不同级别上的可插入性(plugability)。
可插入性的一个有力的例子是构建您自己的 render 工具包。将框架中的呈现(rendering)部分和控制器部分分离的能力实现了良好的可扩展性。组件供应商可以编写他们自己的工具包以处理不同的标记语言,如 XML 或 WML。另外,render 工具包也不依赖于 JSP。
因为 JSF 有一个丰富的组件模型,所以它支持 RAD 类型的开发。现在我可以使用拖放技术来构建我的 Web 页面。此外,JSF 提供在不打破层次布局的条件下,将可视组件同后台模型组件连接起来的途径。
JSF 有以下缺点:
JSF 仍是相当新的并处于发展过程中。要看到成功的部署和广泛的应用还需要一段时间。另外,组件供应商可能并不能做您想让他们完成的所有事情。
手工方式的 JSF 并不比 Struts 简单。它的目标更倾向于 RAD。那些喜欢手工开发的人(例如,那些不喜欢 IDE 的 vi 类型的人)可能会发现 Struts 更容易开发。
Struts 导航可能会更加灵活一些,但同时也导致控制器逻辑更加复杂。
JSF 和 Struts 将会继续共存一段时间。Struts 社区已经了解了 JSF 并在作出一些改变以对 JSF 提供强大的支持。参见 What about JSTL and JavaServer faces?
在工具的角度,如果您留意了 WebSphere Studio 对 JSF 和 Struts 的工具支持,将会发现 Struts 工具集中于控制器方面。Web Diagram 编辑器帮助构建您的 Struts 配置,而向导/编辑器构建 Struts 构件。JSF 工具适合于构建页面,而实质上向您隐藏了 JSF 框架。可以预计 WebSphere Studio 将暂时同时支持两种框架。当 JSF 趋于成熟以后,预计将可以在 JSF 中看到一些控制器方面的可用工具。
分享到:
相关推荐
JSF 已经可以完成 Struts 可以做的任何事,而且做的更多。Struts 并不是来自于强制性的需求。它是开发人员厌烦了一次次的编写相同的逻辑而创造的。JSF 的出现,既是必然的需要也是竞争的结果。
JSF与Struts的区别,JSF是面向组件编程的,Struts不是面向组件编程。JSF使用范围没有Struts普及。
接着详细的分析了jsf和struts的优缺点.对如何改进,结合jsf和struts各自的优点,并对中间的可行性做出了详细的分析. 最后是对该中间件的详细构架设计和实现. 希望对学jsf和struts,or开发中间件的朋友有帮助.
基于J2EE下的JSF与Struts框架比较分析
详细介绍JSF与Struts的异同 详细介绍JSF与Struts的异同
word文档。 <br>这里我们要将 Tapestry 与其它主要的 Java Web 框架做一番比较,包括 Struts,JSF。 ……
JSF与Struts的异同.rar
JSF与Struts的区别.doc
jsf struts
MVC模式JSF与Struts的异同小结,仅仅是学习则以!
Struts+Spring+Hibernate+Jsf
基于Struts,应用JSF的一个登陆DEMO
Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细...
struts2.0集成JSF插件,完全可以运行
struts和jsf分页
中文详述 strut2 jsf 用法 均为chm格式
我的J2ee成功之路 第20章源码,解压导入eclipse里,配置好即可运行
包内有一个jsf例子,多个struts tiles例子 是学习框架不错的例子!
就像Struts框架一样,JSF定义了一套JSF标签 JSF的全称 1、Joint Strike Fighter (JSF) 2、Java Server Faces (JSF) Java Server Faces (JSF) JSF是一种用于构建Java Web 应用程序的标准框架(是Java ...
一个关于ssha最基础的集合的例子,还用到了json。这个小项目用到了struts,spring,hibernate,异步刷新(ajax),json等技术。如果你刚接触这几个框架,或是想尝试结合这几个框架,那这个项目对你来说很有用。