作者:Chris SchalkQ?/SPAN>Oracle Corporation
2005 q?/SPAN> 4 ?/SPAN>
来源Q?/SPAN>http://www.oracle.com/technology/global/cn/tech/java/newsletter/articles/introjsf/index.html
JavaServer Faces (JSF) 是一U用于构?SPAN lang=EN-US> Web 应用E序的新标准 Java 框架。它提供了一U以lgZ心来开?SPAN lang=EN-US> Java Web 用户界面的方法,从而简化了开发?SPAN lang=EN-US>JavaServer Faces q引起了q大 Java/Web 开发h员的兴趣?SPAN lang=EN-US>?/SPAN>企业开发h?SPAN lang=EN-US>?/SPAN>?SPAN lang=EN-US> Web 设计人员发?SPAN lang=EN-US> JSF 开发可以简单到只需用L?SPAN lang=EN-US> (UI) lg拖放到页面上Q?SPAN lang=EN-US>?/SPAN>pȝ开发h?SPAN lang=EN-US>?/SPAN>发C富而强健的 JSF API Z们提供了无与伦比的功能和~程灉|性?SPAN lang=EN-US>JSF q通过良好构建的模型-视图-控制?SPAN lang=EN-US> (MVC) 设计模式集成到它的体pȝ构中Q确保了应用E序h更高的可l护性。最后,׃ JSF 是通过 Java Community Process (JCP) 开发的一U?SPAN lang=EN-US> Java 标准Q因此开发工具供应商完全能够?SPAN lang=EN-US> JavaServer Faces 提供易于使用的、高效的可视化开发环境?/FONT>
JSF ?SPAN style="COLOR: red">主要优势之一是它既?SPAN lang=EN-US> Java Web 用户界面标准又是严格遵@模型-视图Q控制器 (MVC) 设计模式的框架。用L面代码(视图Q与应用E序数据和逻辑Q?B>模型Q的清晰分离?SPAN lang=EN-US> JSF 应用E序更易于管理。ؓ了准备提供页面对应用E序数据讉K?SPAN lang=EN-US> JSF 上下文和防止寚w面未授权或不正确的访问,所有与应用E序的用户交互均׃个前?SPAN lang=EN-US>“Faces”servletQ?B>控制?/B>Q来处理?SPAN lang=EN-US>
?SPAN lang=EN-US> 1Q?SPAN lang=EN-US>JavaServer Faces ?SPAN lang=EN-US> MVC 实现
Faces Controller servlet 充当用户?SPAN lang=EN-US> JSF 应用E序之间的纽带。它在明限定的 JSF 生命周期Q规定了用户h之间的整个事件流Q的范围内工作。例如,一收到讉K JSF 应用E序的初?SPAN lang=EN-US> Web hQ?SPAN lang=EN-US>Faces Controller servlet 侉K过首先准备 JSF 上下文(存放所有应用程序数据的一?SPAN lang=EN-US> Java 对象Q来处理h。然后控制器把用h引到所h的页面。该面通常使用单的表达式语a来处理来?SPAN lang=EN-US> JSF 上下文的应用E序数据。一收到后箋hQ控制器更新所有模型数据(假设输入了新数据Q?SPAN lang=EN-US>JSF 开发h员可以通过~程的方式在应用E序q行期间随时讉K整个 JSF 生命周期Q从而可以随时对应用E序的行行高度控制?/FONT>
JavaServer Faces 的真正威?/SPAN>在于它的用户界面lg模型。在该模型中Q应用程序完全用lg集合构徏Q这些组件可以针对多U客Lcd用不同的方式来进行显C。与其他专有技术(?SPAN lang=EN-US> ASP.NetQ有点类|JSF ?SPAN lang=EN-US> UI lg模型技术开发h员能够用预先构建的用户界面 (UI) lg来构?SPAN lang=EN-US> Web 用户界面Q而非完全从头构徏用户界面Q,从而提供了前所未有的开发效率?SPAN lang=EN-US>JSF UI lg有多UŞ式,可以单到只是昄文本?outputLabelQ或者复杂到可以表示来自数据集合Q如数据库表Q的表格化数据的 dataTable?SPAN lang=EN-US>
JavaServer Faces 规范在其参考实施中提供了一l基?SPAN lang=EN-US> UI lgQ这些组件本w是非常有用的。它们包括两个组件库Q即“HTML?/SPAN>lg?SPAN lang=EN-US> ?它大部分映射了标准的 HTML 输入元素Q以?SPAN lang=EN-US>?/SPAN>核心?/SPAN>?SPAN lang=EN-US> ?它辅助常见的应用E序开发Q务(如,国际化和验证/转换输入数据Q。除了提供一个基?SPAN lang=EN-US> UI lg库之外,JSF API q提供了扩展和创建定?SPAN lang=EN-US> JSF UI lg的功能,从而在基本lg之上提供更多功能?/FONT>
׃ JSF API 的丰富性和灉|性,许多 Java 开发h员开始创建新?SPAN lang=EN-US> JSF lg库和实现?SPAN lang=EN-US>Oracle ?ADF Faces 是一个完全符?SPAN lang=EN-US> JSF 规范的组件库Q它?SPAN lang=EN-US> JSF 应用E序开发提供了一l广泛的增强 UI lg。这些组件包括针Ҏ(gu)U客Lcd的多U呈现器、高U表根{颜色和日期选择器以及大量通用lgQ如菜单、命令按钮、{U选择器和q度指示计)?SPAN lang=EN-US>
?SPAN lang=EN-US> 2Q?SPAN lang=EN-US>Oracle ?SPAN lang=EN-US> ADF Faces JSF UI lg
除了 Oracle ?SPAN lang=EN-US> ADF Faces 之外Q还有其他新?SPAN lang=EN-US> JSF lg库开始从开放源代码C和Y件供应商C中出现?B>MyFaces 是一个新 JSF UI lg库的例子Q它通过 Apache 作ؓ一个开放源代码目提供的?SPAN lang=EN-US>Myfaces q是?SPAN lang=EN-US> JSF 基本 UI lg的增强,它拥有更q泛?SPAN lang=EN-US> UI 功能Q如集成?SPAN lang=EN-US> Tiles 支持、支?SPAN lang=EN-US> Javascript 的菜单和树控件?/FONT>
?SPAN lang=EN-US> 3Q开放源代码?SPAN lang=EN-US> MyFaces 实现?SPAN lang=EN-US> UI lg?/FONT>
JSF UI lg技术最引h注目一个方面就是它的可插入呈现功能?SPAN lang=EN-US>JSF UI lg能够Ҏ(gu)查看lg的客L的类型来以不同方式呈现自w。例如,HTML 览器将看到特定 UI lg?SPAN lang=EN-US>“HTML 览器友?SPAN lang=EN-US>?/SPAN>版本Q而支持无U或 WAP 的微型设备将看到同一 UI lg?SPAN lang=EN-US>“WML 友好?/SPAN>版本Q?SPAN lang=EN-US>JSF 通过解除 UI lg与其呈现逻辑之间的耦合从而能够ؓ同一 UI lg创徏多个呈现器实Cq一功能。不同的呈现器可以与 UI lg相关联,在运行时 UI lg可以Ҏ(gu)h的客Lcd军_使用哪个呈现器?/FONT>
?SPAN lang=EN-US> 5Q一?SPAN lang=EN-US> ADF Faces 表格lg针对无线客户端和 HTML 客户端进行了不同的呈?/FONT>
q应当指出的是,׃ JSF 的可插入呈现功能Q?SPAN lang=EN-US> JSF UI lg能够昄Mcd的数据,无论它是标记数据Q如 HTML?SPAN lang=EN-US>XML?SPAN lang=EN-US>WML {)q是二进制数据。例如,UI lgq可以显CZq制数据Q如囑փ或不同的文类型,?SPAN lang=EN-US> SVG?SPAN lang=EN-US>PDF ?SPAN lang=EN-US> Word?/FONT>
随着 JSF 开发h员和拥护者社区的不断壮大Q现在有几个|站致力于进一步推动独立的 JSF 开发?B>JSFCentral 是一个完全ؓ JSF 开发社区服务的新网站。它包含 JSF 技术信息、?SPAN lang=EN-US>/lg信息以及大量?SPAN lang=EN-US> JSF 相关的文章?SPAN lang=EN-US>
?SPAN lang=EN-US> 4Q?SPAN lang=EN-US>JSFCentral ?一个免费的 Javaserver Faces C
因ؓ JavaServer Faces 是一U标准的 Java 技术,因此软g开发工具完全能够ؓ JavaServer Faces 提供高的集成开发工h持。多个供应商现在不同E度地支?SPAN lang=EN-US> JSF 开发,q大大提高了 JSF 的易用性和功能?SPAN lang=EN-US>Oracle?SPAN lang=EN-US>Sun?SPAN lang=EN-US>Borland ?SPAN lang=EN-US> IBM 都ؓ JavaServer Faces 提供了开发环境。由于开发工具供应商在竞相提供更好、更单和更多的开发环境,因此Z IDE ?SPAN lang=EN-US> JSF 开发拥有美好的前景Q?/FONT>
?SPAN lang=EN-US> 6Q?SPAN lang=EN-US>Oracle ?SPAN lang=EN-US> JDeveloper 提供高效、可视化?SPAN lang=EN-US> JSF 开发体?/FONT>
JavaServer Faces 通过提供模型-视图-控制器设计模式的一个简z实玎ͼ同时在不牺牲开发能力和灉|性的前提下提供高效的以组件ؓ中心的开发,解决?SPAN lang=EN-US> Java Web 开发的许多历史问题。此外,因ؓ JSF 是一U?SPAN lang=EN-US> Java 标准Q因此多个Y件供应商l提供始l高效的开发环境,q些开发环境毫无疑问将辑ֈ或很可能过专有的可视化开发环境。请l箋xQ?/FONT>