JavaServer Faces 1.0 Framework 使您可轻松创建强大和动态的 Web 应用程序。市场上有许多可用的 Web 用户界面框架,但是 JavaServer Faces Technology 由于以下几种原因而脱颖而出:它是一个 Java Community Process 标准;它为 Web UI 编程引入了 JavaBeans 组件范例;并且它的构建采用了许多已有架构的优点。作为一个标准,许多工具供给商可以受益于严格定义且一致的行为。JavaServer Faces Technology 的设计理念是一开始就在工具内部使用。用户也可以受益于不同 JavaServer Faces 技术实现之间的一致且明确的行为。
在 JavaServer Faces Technology 中提供了很多有用的特性。需要着重介绍的一些主要功能包括:
Managed Bean 工具
验证工具
丰富且可扩展的组件库
插入式呈现工具包
对具体用户事件响应的导航
跨请求保留应用程序状态
转换模型
本文将简要介绍 JavaServer Faces Technology 的这些功能并且给出一些例子。
关于这些功能的具体信息和 JavaServer Faces Technology 提供的其他功能,请参考 J2EE 指南的 JavaServer Faces Technology 的相关章节(第 17-21 章)。
JavaServer Faces 应用程序实质上是一个运行在一个与 Java(TM) 2 Platform, Enterprise Edition (J2EE(TM) platform) 兼容的容器中的 Servlet 或者 Java Server Pages(jsp) 应用程序。这说明它需要 Java Servlet 2.3 和 JSP 1.2 或者更新的版本。 开始创建和配置一个 JavaServer Faces 应用程序的最好的方法是免费下载Java 2 Software Development Kit, Standard Edition (J2SE SDK) 1.4 或者更高版本。需要指出的是,JavaServer Faces Technology 不要求在应用程序中使用 JSP 页面,您可以自由选择直接使用 Servlets 或者其他模板技术。假如确实对 JSP 容器使用了 JavaServer Faces Technology,您将通过 JavaServer Faces 的客户组件标签从内建的 JavaServer Faces 内核和 Html 组件库中受益。JavaServer Faces 组件代表像文本字段、表单、按钮、表格、复选框等的 Web 控件。
使用 JavaServer Faces Technology 创建一个 JSP 页面时,在服务器的内存中会建立一个组件树,每一个组件标签对应树中的一个 UIComponent 实例。该框架使用组件树来处理应用程序的请求并且创建一个呈现出的响应。当用户生成一个事件时,例如,点击了一个按钮,JavaServer Faces 生命周期即处理该事件并且产生适当的响应。这是一个对大多数图形用户界面编程的表单而言而常见的一种的范例(paradigm)。
FacesServlet 是进入 JavaServer Faces 框架的入口点。它处理请求处理生命周期并且用作一个前端控制器。JavaServer Faces Technology 也有保存重要请求信息的上下文的概念。上下文对象被称为 FacesContext 。在 JavaServer Faces Technology 生命周期的每个阶段上下文对象都被修改并且每次请求时都是有效的。
JavaServer Faces Technology 框架也有“值绑定”和“方法绑定表达式”的概念。假如熟悉了像 JSP Standard Tag Library (JSTL) 或者 JSP 2.0 这样的技术,您就已经熟悉了表达式语言的概念。JavaServer Faces Technology 绑定表达式使您可以轻易地和底层数据模型交互。Character Combat 演示应用程序举例说明了如何使用“值绑定”从数据模型中提取值。
简单的 JavaServer Faces Technology 应用程序
本文包含一个简单的 JavaServer Faces 应用程序,它阐明了 JavaServer Faces Technology 的一些重要概念。为了理解该应用程序, 您应该已经熟悉了包括JSP、 Servlets 和标签库在内的基本的 J2EE Web 技术。
示例应用程序后的基本想法是让用户参加一个快速有趣的游戏。您是否想知道假如从《指环王》中取两个人物并使它们互相打斗会发生什么?示例应用程序以一种简单有趣的方式回答了这个问题。 该应用程序的名称是 Character Combat 。