频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

简介Java Server Faces(1)

作者: 郭雄 出处:goCom 2007-12-11 13:52    砖    好    评论   进入论坛
阅读提示:JSF(Java Server Faces)体系结构是一种Web应用程序框架,它是首个Web应用程序开发的标准框架。

1、JSF简介

JSF(Java Server Faces)体系结构是一种Web应用程序框架,它是首个Web应用程序开发的标准框架。JSF提供了一个基于组件的架构(框架)用于管理和构建Web应用程序接口,它也提供了丰富的功能集包含事件处理机制(Event Handling Mechanism)、页面导航(Page Navigation)、验证客户端数据(Input Validation)和数据转换(Conversion)等等。它同样也提供了基于组件的插件化体系来开发和展现用户界面组件,开发者可随时开发他们的自定义UI组件并很容易地将其应用到框架之中。JSF框架最主要的特色之一就是它并不仅针对于一种类型的客户端,意味着除了用于桌面的Html浏览器客户端外,它甚至还可能支持用于移动电话的Wml浏览器客户端。在这篇文章中,将对JSF框架和组成JSF框架的各种关键部件进行一个简单的介绍,接下来详细介绍JSF的请求处理生命周期的各种状态,然后提供一个简单的应用来示范其各种特性。

2、JSF基于组件的架构
      
在JSF出现之前,Servlets和JSP是在构成Web应用开发的核心组件中最主要的部分。我们来看看在一个传统的Web应用程序中所发生的交互作用,它的实现仅是由遵循MVC-2构架模型的Servlet和JSP组件来构建的。客户端(通常是一个HTML浏览器)发送请求到服务器,Web服务器收到请求,封装request然后通过来自客户端的各种参数值组装这个request对象并将其发送给Servlet。Servlet担当一个控制器(Controller),它解析接收到的request,然后与要执行各种各样的业务逻辑的Model(Java Beans)相结合,最后来选择一个要展现给用户的View。

就像Swing和AWT一样,JSF提供了一个基于组件的体系结构用于开发可重用的UI组件,使得你不需要去重复一些往往会发生在Model2体系结构的View部分的一些复杂的工作。这个框架不仅限于开发自定义的UI组件,同时也支持多种高级特性如之前提到的事件处理机制、验证来自客户端的用户输入数据和页面导航机制等。JSF的好处是表达各种各样的行为或属性的UI组件和它的呈现器(Randerer)之间的耦合度非常低,实际上几乎为零。因为用户与JSF应用交互时,它们其实是与呈现器的输出进行交互,取呈现器针对特定的客户端来创建特定的表现。有关Randerer在后面会有介绍。所以HTML浏览器并不是惟一的目标客户端应用,JSF应用甚至可能会在WML浏览器上也运行的很好。

JSF1.0平台完全符合JSR127标准,2.0的平台完全符合JSR(Java Specification Request)252标准规范。基于规范的内容,JSF2.0组件集包含服务端UI组件和事件发布模型、一套基本的UI组件、一个轻量级的依赖注入容器,规范的内容还包括可自动同步UI组件和应用程序对象、构建于Servlet AP之上,可与JSP一起使用,但并非完全依赖它等等。作为基于组件的构架,JSF具有很好的可配置性和可扩展性。正如开始提到的它具有插件化的体系,这使得JSF的很多功能都可以用可插入的组件替换。这种程度的可插入性让你在构建Web应用GUI方面得到相当大的灵活性,并且还可以很容易地将其它的一些基于组件的技术融入到JSF开发中。例如,JSF内置的轻量级的IOC框架,可以用更强大的Spring框架来取代。与先进的Web2.0技术相结合— 结合JSF与Ajax的优势来开发更加健壮的Web应用程序。

3、JSF基本原理

在JSF应用中,最重要的几个组件是:

◆UI组件:有状态的对象,有服务器维护,提供与用户的特定交互功能。UI组件是具有属性、方法和事件的JavaBean。它们被组织进一个视图,而该视图通常显示为一个页面的组件树。
◆托管①bean
◆验证器
◆转换器
◆事件和监听器
◆页面导航
◆呈现器

以上所述的所有组件都可以在单独的API包中找到。例如,UI组件在javax.faces.component包中,Validation API在javax.faces.validator包中等等。

3.1、UI组件

如果Java Swing的UI组件的展现是用于桌面Java应用程序,那么JSF UI组件则是用于Web应用程序。像Swing组件一样,它们构建在JavaBean规范和标准之上。这意味着JSF组件具有属性、方法和事件,如同传统的JavaBean中所具有的一样。JSF UI组件的特点之一就是它们可以管理组件的状态,更特别的是它们驻留在服务器端而不是户端,这是针对Web应用的约束做的一些特殊设计。很多内置的UI组件与JSF API绑定,如常用的Label,Text-Field,Form,Check-Box等等。JSF同时也提供了一套框架用于创建自定义的UI组件。

值得注意的是JSF UI组件仅表达一个组件的属性、行为和事件而并非实际的显示。例如,对于一个文本框(Text-Field),它的属性可以是文本框的值,可输入的最大字符数等等。修改文本框的现有的值或设置它的最大字符数将产生行为。改变文本框的值可能使得文本框触发某种事件的发生。这种形式即显示在客户端的文本框本身与UI数据呈现是相分离的。

这意味着有一个单独的组件,被称作Renderer,由它来负责UI组件在不同的客户端层面的显示,可能是运行在PC机上的HTML浏览器,也可能是运行在移动电话内部的WML(无线标记语言)浏览器。每个JSF组件都由一个惟一标识符来标识。

3.2、托管(Managed)bean

托管bean其实是一些遵循Java Bean规范的标准的Java类。一般地,托管bean被用来表达用户输入。它们甚至可能担当监听器(Listener)也可以处理适当的Action。

而我要向大家重点介绍的是,托管bean也是一个真正的IoC容器。当然,谈到IoC,大家肯定会想到目前比较流行的Spring框架,但还有另外两个实现了IoC的框架:HiveMind和PicoContainer,这是目前的三大IoC。

关于IoC就不作详细介绍了,但在这里列出它的几个核心的方面:

◆控制对象实例化并通过设置(setter)注入托管对象
◆依赖处理
◆支持对象生命周期管理
◆对于配置管理的支持

接下来,根据以上几点来解释JSF托管Bean同样也是一个“IoC”容器。

3.2.1、实例化控制

JSF的托管Bean工具提供了很好的解决方案来创建和实例化托管(Managed)Bean。

在JSF之前,要在页面中处理JavaBean,我们一般使用JSP的<jsp:usebean>标签,它允许我们在一个指定的scope中实例化JavaBean。JSF对JSP的这个特性做了很大的改进。使用JSF,你现在可以将任何一个含有无参构造函数的Java类,通过将其引用到一个XML配置文件faces-config.xml中注册为一个托管bean。例如一个Java类(或POJO),名为”User”并有name,phone和email三个字段:

package com.primeton.jsf.test

public class User {
String name ;
String phone ;
String email ;

public User () {
}

public void setName (String name) {
this.name = name ;
}

public String getName () {
return name ;
}

public void setPhone (String phone) {
this.phone = phone ;
}

public String getPhone () {
return phone ;
}

public void setEmail (String email) {
this.email = email ;
}

public String getEmail () {
return email ;
}
}


共3页: 1 [2] [3] 下一页
【内容导航】
专题
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看81024次)
·UML类图详解 (查看72498次)
·C++是垃圾语言?! (查看42631次)
·C#技术开发指南 (查看40232次)
·UML统一建模语言 (查看39205次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。