简述利用JavaServer Faces开发Web应用程序

时间:2023-06-25

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

  1  JSF出现的背景和技术优势

使用Java开发Web应用程序经历了几个发展阶段。一开始是使用Servlet,直接利用requeST和response对象接收和响应客户端的请求。Servlet的一个显着缺点是需要在Java代码中嵌入大量的标记语言(如HTML),处理逻辑和显示逻辑严重耦合,非常不利于程序的维护和界面的设计。JavaServer Faces 的用户界面组件 JavaServer Faces 的真正威力在于它的用户界面组件模型。在该模型中,应用程序完全用组件集合构建,这些组件可以针对多种客户端类型用不同的方式来进行显示。与其他专有技术(如 ASP,Net)有点类似,JSF 的 UI 组件模型技术使开发人员能够使用预先构建的用户界面 (UI) 组件来构建 Web 用户界面(而非完全从头构建用户界面),从而提供了前所未有的开发效率。JSF UI 组件有多种形式,可以简单到只是显示文本的 outputLabel,或者复杂到可以表示来自数据集合(如数据库表)的表格化数据的 dataTable。

遵循MVC-Model2架构开发的应用程序框架(Framework)已有不少,例如当今比较流行的Struts、Tapestry、Turbine等。JSF的出现并不是要代替这些框架,相反,由于技术的着重点不同,JSF可以和这些Framework很好地协同工作。JSF基于JSTL技术,着力于解决现有框架不能完成的难题。


JSF的技术重点在View部分,它实现了Web应用程序设计角色的完全分离。JSF网页设计者只需要专注于页面的设计;应用程序开发者主要关心Model部分的JavaBean的开发。

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


其中JSF Core Library负责基本程序的运行,包括程序运行生命期控制、事件处理等。RenderKit把服务器端的UI组件转化成任何一种使用者界面标准,支持众多的标记语言。

为一个JSF网页的生命周期。只有送给java.faces.webap.FacesServlet控制器的HTTP请求才进入这个生命周期。在阶段1,系统根据JSF网页的内容建立一个组件树,根据组件树中每个组件的设定将对应的转换器(Converter)、验证器(Validator)以及事件处理函数(Event Handler)与特定组件关联,在阶段2中系统根据HTTP request的参数一一调用这些组件;然后分别在阶段3、4和5中执行参数验证、模型更新和事件处理;系统调用组件相应的方法将它们转化成适当的标签(HTML或者WML等)送到客户端。


  2  JSF应用的一个简单实例

本例展现了使用JSF框架设计Web应用程序的步骤。程序功能是让用户在浏览器中输入用户名和密码登录,系统执行验证后返回登录结果。

  2.1 视图设计

视图(View)部分包括login.jsp和response.jsp文件。前者是一个可以让用户输入登录名、密码进行登录的页面,后者用于返回用户的登录结果。所有的JSP文件都要加入以下二行,以引入JSF的自定义标记库:

<%@ taglib uri=″http://java.sun.com/jsf/html″prefix=″h″%>

<%@ taglib uri=″http://java.sun.com/jsf/core″prefix=″f″%>

其中login.jsp文件的主要代码如下:


Please enter your username and password


username:



password:





注释部分说明了View是如何与Model和Controller关联的。

  2.2 模型设计

JSF的模型主要用JavaBean来实现,这里定义了一个ValUser.java作为JavaBean,用于存储和处理页面传送的信息。

package myjsf;

public class ValUser{

public ValUser( ) { }

String username=null;

String password=null;

//此处省略bean属性username和password的getter

//和setter方法

// ……

String resultMessage=null;

public String getResultMessage( )//返回登录结果

{

if (isValid( ))

this.resultMessage=″valid user,welcome″;

else

this.resultMessage=″invalid user,please login again″;

return this.resultMessage;

}

public void setResultMessage(String resultMessage)

{ }

private boolean isValid( )//检验用户名密码是否合法

{

if (this.password.trim( )。equals(″123456″))

return true;

else

return false;

}

}

为了方便说明,这里简单地定义用户输入123456就是合法登录。实际应用中,应该使用JDBC或其他技术从数据持久层获取该用户的密码进行验证。

  2.3 控制器设计和配置文件

JSF的控制器设计是在配置文件中完成的。首先需要配置Web应用程序的web.xml文件,加入以下内容:

Faces Servlet

javax.faces.webapp.FacesServlet


1


Faces Servlet

/login/*


以上内容表示只有对相对路径在login下的页面请求才交给JSF控制器处理,其他请求则不经过该控制器。JSF本身的控制文件是faces-config.xml,其中的navigation-rule节点定义了页面跳转流程控制,managed-bean节点定义了JavaBean的信息等,其他用户界面组件库 由于 JSF API 的丰富性和灵活性,许多 Java 开发人员开始创建新的 JSF 组件库和实现。

  3  结  论

JSF框架较好地贯彻了MVC-Model2设计体系的思想,使页面表示和商业逻辑脱耦,让各类Web应用程序开发角色实现真正的各司其职。同时,JSF支持不同的客户端应用,使Web应用程序可以很容易地适应不同的客户端访问协议。JSF比较适合开发大型的Web应用程序。由于配置过程比较繁琐,待支持JSF的集成开发工具或插件发展成熟时,开发基于JSF的Web应用程序将会变得十分轻松和自然。

上一篇:网格技术在协同管理平台的构建与模式的实现
下一篇:基于单片机的LED彩灯控制器

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料