一种新的JSF技术的WEB应用开发研究

(整期优先)网络出版时间:2008-09-19
/ 3

一种新的JSF技术的WEB应用开发研究

彭玉华

摘要:论述了如何利用JavaServerFaces(JSF)开发Web用户界面,分析了JSF技术开发WEB的过程及其应用前景。

关键词:JSF;MVC模式;Web用户界面

引言

在开发基于Java的Web用户界面时仍然需要手工编写大量的标签、按钮等控件代码,同时还要考虑页面状态信息的保存、客户端事件处理等问题,开发难度比较大,效率较低,重用性差。与VisualStudio.NET可视化开发工具的支持相比,交互操作性不强。JavaServerFaces(JSF)技术正是为了解决这一问题应运而生的,它能够提供可重用、可扩展、基于组件的用户界面框架,在开发工具RAD的支持下实现可视化开发。它具有其最重要的特性之一是它与标记语言、协议、客户端设备无关。现在JSF技术已经得到了许多大厂商的支持,许多开源项目也提供对JSF技术的支持。

传统JSP开发存在的问题。JSP是一个基于Java的Web用户界面开发标准技术,是一种“脚本式”开发的Web技术,虽然功能十分强大,但在JSP面中混淆了大量用于显示逻辑的HTML和用于业务逻辑的Java代码,使得界面设计与程序开发无法分离;脚本不能重用,不同JSP界面会出现多个版本同一段代码,使得程序的设计极其复杂;将Java代码从JSP标签库TagLib中分离,只是有限地实现了表示层与逻辑层的分离,没有摆脱代码和HTML面揉和的问题;编译的出错信息很难在JSP中找到准确的出错位置,由此给调试带来很大困难。尤其是前端界面设计十分复杂和功能强大的可视化工具不多。J2EEWeb应用一直想实现表示层和业务层的分离这个目标。于是Sun公司提出的一种新标准框架JSF可以很好地解决上述问题。

1JSF技术分析

JavaServerFaces(JSF)是由JavaCommunityProcess(JCP)制定的一个构建Web应用程序的新标准Java框架。它具有良好定义的请求处理生命周期和丰富的组件层次结构,它提供了一种以组件为中心来开发JavaWeb用户界面的方法,它是一种表现层技术,使开发人员能够快速的开发基于Java的Web应用程序的技术,而JSP是用于后台的逻辑处理的技术。在一些开发工具的支持下,只需将JSF组件拖到页面上,就可以很容易的对Web界面进行可视化设计。还有很多复杂的组件可以使用,比如DataTable这样的表格组件,Tree这样的树形组件等等。还可将用户界面上的组件与一个数据源绑定,并将客户端用户界面产生的事件交给服务器端处理,从而大大降低基于Java的Web用户界面的开发难度,提高开发效率。

JSF还通过将良好构建的模型-视图-控制器(MVC)设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。

1.1JavaServerFaces技术主要内容

1.1.1用于表示用户界面组件并管理其状态、处理事件和验证输入的JavaAPI,这些API支持国际化和可访问性(accessibility);字串3字串7

1.1.2用于在JSP面中表示JSF组件的自定义标签库。JSF的主要部分是一个GUI组件框架和一个用于跨不同标记语言或客户端设备描述组件的灵活模型。JSFGUI组件框架使开发人员能够创建JSF应用程序的用户界面。JSFGUI组件包括标准的HTML表单控件(如按钮)、布局组件,以及更复杂的组件,如数据表。此外,第三方还可以扩展规范中定义的基本类,来开发额外的GUI组件。

1.2JSF组件的体系结构

组件的功能由组件类定义,组件的呈现由一个单独的呈现器(renderer)定义。呈现器定义了组件类如何映射为适合特定客户的组件标签。JSF参考实现中包含了一个标准的RenderKit,用于生成基于HTML4.01的标记,实现将组件类呈现给HTML客户。

JSF设计的JavaWeb用户界面遵循模型-视图-控制器(MVC)设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使JSF应用程序更易于管理。为了准备提供面对应用程序数据访问的JSF上下文和防止对面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端Facesservlet(控制器)来处理。JSF技术做到了应用程序逻辑和表示的完全分离,是真正彻底的MVC模式。目前,JSF1.2已经正式作为一个标准加入了JavaEE5中。目前,JSF1.2已经正式作为一个标准加入了JavaEE5中。

2基于JSF的Web应用程序开发过程

JSF作为一种标准的技术,得到了很多工具提供商的支持。如Sun公司的JSFWebUI、IBM公司的JSFextension以及Oracle的ADFFaces等,另外有一些很优秀的商业开发工具,BEAWorkshop(原M7NitroX),Exadel,MyEclipse这样的基于Eclipse的插件开发工具。

在快速开发工具RAD的支持下,符合JSF标准的Web应用程序开发、运行以及调试均在IDE环境中实现,整个程序开发过程快捷高效。

如果不使用IDE开发环境,在开发应用程序前,必须先搭建系统运行平台。比如安装TOMCAT和Sun的JavaWebServicesDeveloperPack(JWSDP)1.2。使用JSF时需要JSTL与JSF的标签函数库,在Web应用程序的WEB-INF\lib目录下放入所需的JAR文件。如果使用IDE开发环境,开发前期的准备工作比较简单,只需安装好IDE环境即可,不需要其他的配置,一般IDE中都有内嵌的应用服务器,足以支持程序的开发、运行和调试。不管是否使用IDE开发环境,JSF也是一种遵循模型-视图-控制器(MVC)模式的框架。这和传统的MVC框架相似。JSF开发Web应用程序通常分为以下三个步骤:

2.1视图设计

在JSF提供了一组丰富的、可重用的服务器端用户界面组件的条件下实现了视图代码(View)与应用逻辑(Model)的完全分离,即页面与代码的分离。所有对JSF页面的请求系统自动会通过一个前端控制器(FacesServlet)处理,并将结果返回给用户。在开发工具的支持下,用户可以很方便地在可视化环境中构建Web用户界面组件,处理组件的数据校验、事件处理等问题。

JSF是通过标签库和JSP进行集成的。标签库就相当于ASP.NET的服务端组件。可以生成各种大规模客户端模型,如HTML、WML、XML以及JavaScript等。在JSF中有两个库。第一个叫做内核库,在这个库中包含了各种主要的标签,如配置组件、管理事件、验证输入信息等。第二个库的主要功能是将HTML和JSF的各种标签相对应。每一个JSF标签都会对应一个HTML组件。如UIInput标签对应了HTML中的文本框或密码框。

设计每个需要的JSP页面,在页面中放置JSF的内置组件,并将组件与应用层的JavaBean绑定。开发工具自动生成页面对应的Java文件,在文件中定义好页面的JSF组件及其getter、setter方法以及JSF组件的“action”属性对应的方法等。这样很容易建立大规模的客户端模型,处理客户端请求。

2.2模型设计

JSF技术做到了应用程序逻辑和表示的完全分离。在模型设计部分,程序员只需要考虑程序的逻辑功能,不需要考虑数据的表现形式。JSF的模型是通过JavaBean程序来实现的。

2.3控制器设计

JSF的控制器设计是在配置文件中完成的,相关的主要有两个文件:web.xml文件和faces-config.xml文件(均在WEB-INF目录下)。web.xml文件主要用于控制JSF的生命周期,实现部署描述符。faces-config.xml文件实现导航,在文件中控制页面之间的跳转流程。

配置步骤是首先配置Web应用程序的web.xml文件,然后是配置JSF的控制文件faces-config.xml文件。这个过程在IDE环境中自动完成。

JSF的技术关键在View部分,它实现了Web应用程序设计角色的完全分离。JSF网页设计者只需要专注于页面的设计;应用程序开发者主要关心Model部分的JavaBean的开发;程序的流程控制则由faces-config.xml专门配置。

JSF具有强大的组件体系和事件处理系统,完全实现了MVC模式的应用架构,使得基于Java的Web用户界面程序开发难度大大降低,提高了开发效率,非常适用于Web页面的开发。

3结论

JSF是一个开放的标准,具有很好的可重用、可扩展性。按照JSF的规范,用户完全可以定制自己的用户界面组件、事件处理器、数据校验和转换组件等,这些组件和标准的JSF组件一样是可重用的。JSFAPI是直接架构在ServletAPI之上的,因此JSF用户界面组件的呈现并不局限于特定的脚本技术或标记语言。表示层完全可以采用JSP之外的技术。在大量的J2EE表现层框架技术中,JSF表现出极大发展空间。尽管JSF技术还存在很多问题,但随着JSF技术的不断成熟和版本更新,其应用性越来越强。

参考文献

[1]JSF1.0Specification[EB/OL].http://jcp.org/abouOava./communityprocess/final/jsr127,2004,3.

[2]MAHMOUDQH.DevelopingWebApplicationswithJavaServerFaces[EB/OL].http://java.sun.com/developer/technicalArticles/GUI/JavaServerFaces,2003,5.

[3]J2EE1.4Tutorial[EB/OL].http://java.sun.com/j2ee/1.4/does/tutorial/doe/index.html,2004,3.

[4]MAHMOUDQH.DevelopingWebApplicationswithJavaServerFaces[EB/OL].http://java,sun.com/developer/technicalArti-cles/GUI/JavaServerFaces,2003,5.

[5],J2EE1.4Tutorial[EB/OL].http://java,sun.com/j2ee/1.4/does/tutorial/doe/index,html,2004,3.

[6]基于JSF技术的WEB应用开发研.[EB/OL].http://java.e800.com.cn/articles,2007,1.

作者简介:彭玉华,武汉科技大学中南分校信息工程学院。