基于JSF技术的WEB应用研究

时间:2022-10-16 02:16:26

基于JSF技术的WEB应用研究

摘要:介绍JSF是一种新的开发WEB应用程序的框架,探讨了JSF框架的基本工作机制及具体应用。

关键词:Java Server Faces (JSF);框架;组件;事件监听

中图分类号:TP393文献标识码:A 文章编号:1009-3044(2008)06-10000-00

Research of WEB Application Based on JSF Technology

HU Nan

(Department ofLoudi Occupation Technical College,Loudi 417000,China)

Abstract:This paper introduces JSF is a new develop framework for WEB application.in the meantime,the basic work mechanism and particular application of JSF framework are also discussed.

Key word: Java Server Faces (JSF);framework;component;Action Listener

1 引言

随着网络的高速发展和分布式数据库处理技术的广泛应用,计算机软件项目的规模也越来越大,竞争日趋激烈。许多软件开发组织已经开始大量的使用B/S模式来开发Web应用程序,但同时B/S模式的Web应用程序却失去了传统C/S模式程序的高速处理和易管理的图形用户界面。微软Visual 程序开发技术虽然弥补了这些不足,但在跨平台和企业级应用开发领域上并没有优势。Java Server Faces (JSF) 技术正是为了解决这些问题应运而生的,虽然JSF和早期出现的Struts同属于Web应用框架,但它们是两种分属于不同性质的框架,Struts只是单纯的MVC模式框架,而JSF是一种事件驱动型的组件模型。使用JSF,开发Web应用程序将与开发Swing程序类似,可以拖放控件,写事件监听器。现在JSF技术已经得到了许多大厂商的支持,如SUN公司的JSF Web UI、IBM公司的JSF extension以及Oracle的 ADF Faces等,同时IBM、Sun、Borland和Oracle等公司都为JSF提供了开发环境。本文将详细介绍JSF技术和JSF技术的应用。

2 JSF体系结构

JSF既是Web应用程序的用户界面标准,也是遵循MVC体系结构的框架。图1显示了JSF的体系结构。如图所示,用户界面代码(视图)与应用程序数据(模型)是分开的,而所有的交互都由FacesServlet(控制器)处理。

图1 JSF体系结构

当JSF页面中发生一个事件时,该事件通知通过HTTP发往服务器,服务器端通过名称为FacesServlet的特殊Servlet来处理该通知。Web容器里的每一个JSF应用都有自己的FacesServlet。FacesServlet一接收到用户的请求便实例化一个FacesContext对象,它包含了处理请求所必须的信息,在处理过程中主要修改这个FacesContext对象。然后就是处理,处理器是一个叫作Lifecycle的对象。FacesServlet把控制权转交给Lifecycle对象。该对象分6个阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。图2所示为JSF的工作方式。

图2JSF的工作方式

Lifecycle对象处理JSP请求的过程包括:

1)恢复视图。在该阶段中重建组件树。

2)应用请求值。在这个阶段,使用请求里的当前值来更新每个组件的本地值。

3)处理验证。当每个组件的本地值被更新后,Lifecycle对象都会验证这些值的合法性。

4)更新模型值。负责更新服务器端的实际值。

5)调用应用程序。在本阶段中,JSF控制器调用应用程序来处理应用程序级事件。

6)呈现响应。此阶段将在视图中显示当前状态的所有组件。在程序内部,JSF会调用encode( )方法,并显示保存在FacesContext对象中的组件树。

图3所示为JSF请求处理过程中的各个阶段。

图3 JSF请求处理过程中的各个阶段

3 JSF技术的应用

JSF是一种用于构建Web应用程序的新标准Java框架。它提供了一种以组件为中心来开发Java Web用户界面的方法,从而简化了开发。“企业开发人员”和Web设计人员将发现JSF开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富的JSF API为他们提供了强大的功能和编程灵活性。JSF还通过将良好构建的模型-视图-控制器 (MVC)设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。JSF具有良好定义的请求处理过程和丰富的组件层次结构,利用JSF提供的可重用、可扩展、基于组件的用户界面框架,在快速开发工具RAD的支持下,可以通过拖放组件的方式对Web用户界面进行可视化编辑,将用户界面上的组件与一个数据源绑定,并将客户端用户界面产生的事件交给服务器端处理,从而大大降低基于Java的Web用户界面的开发难度,提高开发效率。

JSF技术包括两个主要部分:

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

2) 一个用于在JSP页面中表示JSF 组件的自定义标签库。

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

以下是建立一个JSF应用通常所需要的几个步骤:

1)开发模型对象

JSF技术做到了应用程序的业务逻辑和表示的完全分离。JSF使用后台Bean来实现这种分离。在模型设计部分,程序员只需要考虑程序的逻辑功能,不需要考虑数据的表现形式。

JSF的模型(JavaBean)是根据页面中组件需要处理的业务逻辑而设计实现的,用来保存用户的输入和组件的数据。在JSF中使用JavaBean可以直接在JSF页面中声明或者在配置文件faces-config. XML中声明。

页面设计人员使用标签的value属性将一个组件值绑定到一个后台Bean的属性,代码如下:

<h:inputText id=email value=#{Userbean.email}/>

此代码将名为email的文本框与Userbean后台Bean的email属性绑定在一起。

组件开发人员需要在faces-config.xml文件中配置受管理的后台Bean。代码如下:

<managed-bean>

<managed-bean-name>Userbean</managed-bean-name>

<managed-bean-class>messages.User</ managed-bean-class >

<managed-bean-scope>session</ managed-bean-scope>

</managed-bean>

此代码为后台Bean类User指定一个名称即UserBean,此外将scope属性设为session。

2)开发基于JSF的用户界面。

开发基于JSF的Web应用程序,是在JSF提供了一组丰富的、可重用的服务器端用户界面JavaAPI组件的条件下实现的。用户可以很容易地在可视化环境中利用这些组件构建Web用户界面,处理组件的数据校验、事件处理等用户界面管理问题。

JSP页面是JSF应用的用户接口,每个页面包括一些用来描述web控件的JSF组件,设计每个需要的JSP页面时,在页面中放置JSF的内置组件,并将组件映射到各个JavaBean。页面设计人员利用RAD工具能通过拖放组件的方式轻松实现页面文件,不需要手写大量代码。开发工具自动生成页面对应的java文件,在文件中定义好了页面的JSF组件及其getter、setter方法以及JSF组件的“action”属性对应的方法等。程序员可以方便地在已有程序的基础上修改、调试。

下面代码片段显示了接收用户名和密码以及“登录”按钮的JSF代码。

<h:outputLabel value=电子邮件for=email/>

<h:inutText id=emailvalue=#{Userbean.email}/>

<h:outputLabel value=密码for=password/>

<h:inutText id=passwordvalue=#{Userbean.password}/>

<h:commandButton id=loginaction=#{Userbean.verifyUser} value=登录/>

3)编写事件监听器或者导航规则

编写事件监听器来决定特定事件发生时应该有的反应,导航规则涉及到定义应用程序中各种页面的跳转,两者就构成了JSF的控制器的设计。主要操作在两个配置文件中:web.xml文件和faces-config.xml文件(均在WEB-INF目录下)。web.xml文件主要用于控制JSF的生命周期,实现部署描述符。faces-config.xml文件实现导航,在文件中控制页面之间的跳转流程。

例如,如果输入的用户名和密码正确,则转向登录成功页面,否则转向登录失败,要求重新登录的页面,这些操作是通过在faces-config.xml文件定义导航来实现,代码如下:

<navigation-rule>

<from-view-id>/login.jsp</from-view-id>

<navigation-case>

<from-outcome>success</from-outcome>

<to-view-id>/groups.jsp</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>failure</from-outcome>

<to-view-id>/login.jsp</to-view-id>

</navigation-case>

</navigation-rule>

4 结束语

JSF是基于Java 的Web 应用开发领域里提供的一个可重用、可扩展、基于组件、工具友好的、开放的服务器端UI 框架。它的出现,很大程度上提高了中小型Web应用系统开发的速度。它具有强大的组件体系和事件处理系统,完全实现了MVC模式的应用架构,使得基于Java技术的Web应用开发难度大大降低,提高了开发效率,非常适用于Web系统的开发。尽管在Web应用开发中,JSF表现出其旺盛的生命力,但JSF技术还不是很成熟,还有很多不足,例如组件命名怪异;数据验证上扩展性不高;大部分代码都是Servlet,都要在web.xml中配置,使得运行效率降低,服务器端负载加大。但随着JSF技术的不断成熟和版本更新,其必将获得更加广泛的应用。

参考文献:

[1]Kito D Mann. Java Server Faces int Action[M]. Manning Publications.2004.

[2]王俊标.精通Java Web开发:基于Struts EJB Hibernate JBuilder[M]. 北京:人民邮电出版社,2007.

[3]北京阿博泰克北大青鸟信息技术有限公司. J2EE框架技术―Struts&JSF. 北京:科学技术文献出版社,2006.

收稿日期:2008-01-12

作者简介:胡楠(1978-),男,湖南双峰人,湖南大学在读硕,娄底职业技术学院教师。

上一篇:基于校园网的Web安全机制探讨 下一篇:Java、AJAX在虚拟现实中的交互应用研究