什么是jsf

     什么是jsf
2006年07月14日 星期五 16:01

JavaServer Faces(JSF) 是一种标准的 J2EE 表示层的技术,其主旨是为了使 Java 开发人员能够快速的开发基于 Java 的 Web 应用程序。它不同于其它 Java 表示层技术的最大优势是其采用的组件模型,事件驱动,并且和其它的 MVC 框架相比,它是一种 Java 标准,在Java EE 5 中,JavaServer Faces 1.2 正式作为一个标准,加入 Java Enterprise 的世界。

作为一种高度组件化的技术,开发人员可以在一些开发工具的支持下,实现拖拉式编辑操作,用户只需要简单的将 JSF 组件拖到页面上,就可以很容易的进行 Web 开发了。这是其作为一种组件化的技术所具有的最大好处,我们能用的组件不光是一些比较简单的输入框之类,还有更多复杂的组件可以使用的,比如 DataTable 这样的表格组件, Tree 这样的树形组件等等。在 Ajax 盛行的今天,我们也可以通过 JSF 组件来简化开发人员的开发难度,使得 Ajax 能通过拖拖拉拉的操作方便的进入到我们的应用中去。作为一种标准的技术,JavaServer Faces 得到了相当多工具提供商的支持。同时我们也会有很多很好的免费开发工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作为免费的支持 JSF 的开发工具发布,给 JSF 带来了不小的生气。另外我们也有一些很优秀的商业开发工具可共选择,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 这样的基于 Eclipse 的插件开发工具,为现在广大的 Eclipse 用户带来了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不错的支持 JSF 可视化开发的商业开发工具,在后面我会用一节的篇幅简单的介绍一下这些工具。

传统的 Web 应用程序与桌面应用程序存在着许多本质上的差别,使得用户要手工的去捕获各种浏览器请求,保存客户端状态,并且手工控制着页面的转向,等等。JSF 的出现,无疑给我们带来了巨大的便利,JSF 提供了事件驱动的页面导航模型,该模型使应用程序开发人员能够设计应用程序的页面流。与 Struts 的方式向类似的是,所有的页面流信息都定义在 JSF 配置 XML 文件 (faces-config.xml) 中,而非硬编码在应用程序中。这很大程度简化了开发人员开发难度,简化了应用程序的开发。

同时JavaServer Faces 也是一种遵循遵循模型-视图-控制器 (MVC) 模式的框架。实现了视图代码(View)与应用逻辑(Model)的完全分离,使得使用 JSF 技术的应用程序能够很好的实现页面与代码的分离。所有对 JSF 页面的请求都会通过一个前端控制器 (FacesServlet) 处理,系统自动处理用户的请求,并将结果返回给用户。这和传统的 MVC 框架并没有太大的区别。

JavaServer Faces 是一种使用了 POJO 的技术同时在使用了类似 Spring 的控制反转(IoC) (或称为依赖注入-DI) 技术,在 JSF 的 Backing Bean 中,我们可以把视图所需要的数据和操作放进一个 Backing Bean 中。同时得益于 JSF 使用的 DI 技术,我们可以在配置文件中初始化 Managed Bean,同时我们也可以通过这样的技术很方便的和使用类似技术的 Spring 进行整合。

 

 

什么是 JSF

JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。

JSF 体系结构
JavaServer Faces 的 MVC 实现

JSF 的主要优势之一就是它既是 Java Web 用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“Faces”servlet(控制器)来处理。

 

图 1:JavaServer Faces 的 MVC 实现

JSF 生命周期

Faces Controller servlet 充当用户和 JSF 应用程序之间的纽带。它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作。例如,一收到访问 JSF 应用程序的初始 Web 请求,Faces Controller servlet 便通过首先准备 JSF 上下文(存放所有应用程序数据的一个 Java 对象)来处理请求。然后控制器把用户指引到所请求的页面。该页面通常使用简单的表达式语言来处理来自 JSF 上下文的应用程序数据。一收到后续请求,控制器就更新所有模型数据(假设输入了新数据)。JSF 开发人员可以通过编程的方式在应用程序运行期间随时访问整个 JSF 生命周期,从而可以随时对应用程序的行为进行高度控制。

JavaServer Faces 的用户界面组件

JavaServer Faces 的真正威力在于它的用户界面组件模型。在该模型中,应用程序完全用组件集合构建,这些组件可以针对多种客户端类型用不同的方式来进行显示。与其他专有技术(如 ASP.Net)有点类似,JSF 的 UI 组件模型技术使开发人员能够使用预先构建的用户界面 (UI) 组件来构建 Web 用户界面(而非完全从头构建用户界面),从而提供了前所未有的开发效率。JSF UI 组件有多种形式,可以简单到只是显示文本的 outputLabel,或者复杂到可以表示来自数据集合(如数据库表)的表格化数据的 dataTable

JavaServer Faces 规范在其参考实施中提供了一组基本 UI 组件,这些组件本身是非常有用的。它们包括两个组件库,即“HTML”组件库 — 它大部分映射了标准的 HTML 输入元素;以及“核心”库 — 它辅助常见的应用程序开发任务(如,国际化和验证/转换输入数据)。除了提供一个基本 UI 组件库之外,JSF API 还提供了扩展和创建定制 JSF UI 组件的功能,从而在基本组件之上提供更多功能。

其他用户界面组件库

由于 JSF API 的丰富性和灵活性,许多 Java 开发人员开始创建新的 JSF 组件库和实现。Oracle 的 ADF Faces 是一个完全符合 JSF 规范的组件库,它为 JSF 应用程序开发提供了一组广泛的增强 UI 组件。这些组件包括针对每种客户端类型的多种呈现器、高级表格、颜色和日期选择器以及大量通用组件(如菜单、命令按钮、转移选择器和进度指示计)。

 

图 2:Oracle 的 ADF Faces JSF UI 组件

除了 Oracle 的 ADF Faces 之外,还有其他新的 JSF 组件库开始从开放源代码社区和软件供应商社区中出现。MyFaces 就是一个新 JSF UI 组件库的例子,它通过 Apache 作为一个开放源代码项目提供的。Myfaces 还是对 JSF 基本 UI 组件的增强,它拥有更广泛的 UI 功能,如集成的 Tiles 支持、支持 Javascript 的菜单和树控件。

 

图 3:开放源代码的 MyFaces 实现和 UI 组件库

JSF UI 组件的可插入呈现技术

JSF UI 组件技术最引人注目一个方面就是它的可插入呈现功能。JSF UI 组件能够根据查看组件的客户端的类型来以不同方式呈现自身。例如,HTML 浏览器将看到特定 UI 组件的“HTML 浏览器友好”版本,而支持无线或 WAP 的微型设备将看到同一 UI 组件的“WML 友好”版本!JSF 通过解除 UI 组件与其呈现逻辑之间的耦合从而能够为同一 UI 组件创建多个呈现器实现了这一功能。不同的呈现器可以与 UI 组件相关联,在运行时 UI 组件可以根据请求的客户端类型决定使用哪个呈现器。

 

图 5:一个 ADF Faces 表格组件针对无线客户端和 HTML 客户端进行了不同的呈现

还应当指出的是,由于 JSF 的可插入呈现功能,使得 JSF UI 组件能够显示任何类型的数据,无论它是标记数据(如 HTML、XML、WML 等)还是二进制数据。例如,UI 组件还可以显示二进制数据,如图像流或不同的文档类型,如 SVG、PDF 和 Word。

 
一个新的 JSF 组件开发人员社区

随着 JSF 开发人员和拥护者社区的不断壮大,现在有几个网站致力于进一步推动独立的 JSF 开发。JSFCentral 就是一个完全为 JSF 开发社区服务的新网站。它包含 JSF 技术信息、产品/组件信息以及大量与 JSF 相关的文章。

 

图 4:JSFCentral — 一个免费的 Javaserver Faces 社区

(JSFCentral 的地址是:http://jsfcentral.com/
JSF 开发工具

因为 JavaServer Faces 是一种标准的 Java 技术,因此软件开发工具完全能够为 JavaServer Faces 提供高级的集成开发工具支持。多个供应商现在不同程度地支持 JSF 开发,这大大提高了 JSF 的易用性和功能。Oracle、Sun、Borland 和 IBM 都为 JavaServer Faces 提供了开发环境。由于开发工具供应商在竞相提供更好、更简单和更多的开发环境,因此基于 IDE 的 JSF 开发拥有美好的前景!

 

图 6:Oracle 的 JDeveloper 提供高效、可视化的 JSF 开发体验

总结

JavaServer Faces 通过提供模型-视图-控制器设计模式的一个简洁实现,同时在不牺牲开发能力和灵活性的前提下提供高效的以组件为中心的开发,解决了 Java Web 开发的许多历史问题。此外,因为 JSF 是一种 Java 标准,因此多个软件供应商将继续提供始终高效的开发环境,这些开发环境毫无疑问将达到或很可能超过专有的可视化开发环境。请继续关注!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值