| 简介Java Server Faces |
|
| 作者是 郭雄 | |
| 2007-12-11 07:02:17 | |
|
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基于组件的架构 3、JSF基本原理 ◆UI组件:有状态的对象,有服务器维护,提供与用户的特定交互功能。UI组件是具有属性、方法和事件的JavaBean。它们被组织进一个视图,而该视图通常显示为一个页面的组件树。 以上所述的所有组件都可以在单独的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三个字段: |
|
| 最近更新 ( 2007-12-11 07:02:17 ) |

