引言
IBM WebSphere Application Server 是基于 Java 的 Web 应用 服务器,它创建于开放标准之上,使您能部署和管理从简单 Web 站点到强大的电子商务解决 方案的各种应用程序。IBM WebSphere Studio Application Developer(下文中简称为 WebSphere Studio)是一个集成开发环境,可以用来构建、测试、部署 J2EE 和 Web Services 应用程序。更进一步的信息,请参阅 developerWorks WebSphere Application Server 专区和 developerWorks WebSphere Studio 专区。
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 提供在不打破层次布局的条件下,将可视组件同后台模 型组件连接起来的途径。