首页 / 软件开发 / JAVA / 怀疑论者的JSF: 消除关于JSF的FUD
怀疑论者的JSF: 消除关于JSF的FUD2011-04-11 IBM Rick HightowerFUD 已经围绕 J2EE 的 JavaServer Faces (JSF) 技术多时了,我觉得现在该让它停止了 ,或者至少给出一种公允的说法。关于 JSF 的第一个谣传是,需要一个 WYSIWYG 拖放工具 来进行 JSF 开发。第二个谣传是,JSF 不支持诸如 Struts 这样的 MVC Model 2 框架。最 后一个,也是最致命的谣传是,JSF 开发就是难。在这个 4 部分的系列文章中,我将尽量以最实际的方式消除所有这三个谣传,这种方式 就是教您利用 JSF 进行开发。实际上,如果您认为 JSF 开发很难,可能是您没有用对,幸 运的是,这很容易改正。本期一开始,我将给出 JSF 的一个结构上的概述和一个实际的例子 ,演示了 MVC 和 JSF 的基础。但是在开始之前,我将花一点时间来划清 JSF FUD 与事实真 相。千万别相信 FUD!正如前面提到的,关于 JSF 存在三个谣传,第一个谣传是,进行 JSF 开发需要 WYSIWYG 工具。简直是胡说。就像很多 Swing 开发人员不使用 WYSIWYG 来构建 Swing 应用程序一样 ,您也不需要用 WYSIWYG 编辑器来构建 JSF 应用程序。事实上,不用 WYSIWYG 工具进行的 JSF 开发比利用诸如 Struts 和 WebWork 这样的传统 Model 2 框架进行的开发要容易得多 。本文后面我将详细解释具体原因,但是现在您只要记住:JSF 开发比 Struts 要容易得多 ,即使不使用 WYSIWYG 工具!关于 JSF 的下一个谣传是,不支持 Model 2 架构。目前来说,这实际上说得有点对。但 事实是,Model 2 是针对建立在 Servlets 之上的 Web 开发的 MVC (Model-View- Controller) 的打了折扣的版本。尽管 Model 2 连接到一个无状态协议 (HTTP),但是 JSF 支持更加丰富的 MVC 模型(这是传统 GUI 应用程序更加紧密的近似)。尽管 MVC 的基础使 得 JSF 框架实现比其他框架更难构建,但是有利的是,实现 JSF 的大量实际工作已经不用 您自己完成了,所以您的净付出减少了,而您的净受益就显著增加了。关于 JSF 开发最主要、流传最广的谣传是,JSF 开发太难了。我经常从那些阅读过该技 术的大量资料却没有亲自体验过的人那里听到这种说法,所以我认为我可以轻易澄清这一点 。事实是,如果您将您对 JSF 的观点建立在它无可否认的广泛规范上 —— 以及它的所有生 命周期图表和图片 —— 那么该技术很容易让您发怵。但是请记住这样一件事情,规范是针 对工具实现者的,而不是针对应用程序开发人员本身。正如前面提到的,JSF 框架设计成对 应用程序开发人员来说非常容易。事实上,尽管 JSF 的基于组件的、事件驱动的 GUI 开发模型对于 Java 世界来说还有点 新,但是在别处已经存在很长一段时间了。ASP.net 和 Apple 的 WebObjects 都是类似于 JSF 的架构。Tapestry 是一种开放源代码的、基于 Java 的 Web 组件框架,它采用的方法 有些不同于 JSF 的方法,但是也建立在 Web GUI 组件模型之上。就现在来说,对 FUD 的谈论也许已经足够了。消除您对 JSF 的偏见的最好方法是,适当 地钻研这种技术,我们马上就来做这件事。但是为了避免这成为您对 JSF 的第一印象,我一 开始将给出一个结构上的概述。JSF 初学者像 Swing 和 AWT 一样,JSF 是一个可以提供一组标准的、可重用的 GUI 组件的开发框 架。JSF 用于构建 Web 应用程序接口。JSF 提供以下开发优势:行为与表示的完全分离。对状态的组件级控制。事件容易捆绑到服务器端代码。利用熟悉的 UI 组件和 Web 层概念。提供多个标准化的供应商实现。典型的 JSF 应用程序包含以下部分:用于管理应用程序状态和行为的 JavaBeans 组件。事件驱动的开发(像传统 GUI 开发中一样通过侦听器)。呈现 MVC 样式视图的页面;页面通过 JSF 组件树引用视图根(view root)。尽管使用 JSF 需要跨越一些概念上的障碍,但是这样做是值得的。JSF 的组件状态管理 、容易使用用户输入验证、细粒度、基于组件的事件处理和容易扩展的架构,都将大大简化 Web 开发。在接下来的几小节中,我将更加详细地解释这些特性中最重要的特性。