`
snowyvalley
  • 浏览: 143208 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Mastering JaveServerFaces(JSF)介绍

    博客分类:
  • Java
阅读更多

JavaServer Faces(JSF)是一项令人兴奋的新技术,它将改变我们建立J2EE应用程序界面的方式,通过对JSF的介绍,我们最终使用一套可重用的组件,建立一个简单的用户界面,通过基于组件的框架,Web应用程序的用户界面也会达到Swing的水平。现在,Web程序开发者可以使用和重用他们的应用程序,我们也将看到支持JSF的工具和实现JSF的组件。

JSF的特色

我们一旦学习了UI程序的模式,我们就可以把这些知识应用到任何一个你想使用的符合JSF标准的组件中,这就是JSF的特色。我们最终会有一套标准的组件模型,Web编程也会更容易学习和应用。

什么是基于组件的Web层UI框架,一个组件将具有一些属性和行为等等,JSF的所有组件至少有一套公共的属性和行为,一个组件模型允许你重用第三方组件,而不必去重新学习它,因为它是标准的模型。典型的组件适合整体—部分的层次()并且可以组成更复杂的组件。基于组件的模式有利于处理用户的动作,一个用户的动作,不如单击一个按钮,会有一个定义好的过程,从按钮的单击到被请求执行的商业逻辑,JSF为你提供了定义好的扩展点,便于你的代码嵌入和执行。

基于组件的模型允许开发者把重点放在提供更好的特性上,而不是把目光投向建立Web基础的用户界面的两个甚至更多的不同模型。将来也会有可重用的现成的模型,你在购买基于Swing的UI的组件实现数据图表的同时,你也可以购买到现成的JSF组件提供相似的功能。

JSF使事情更轻松

另一个重要的事情是Jsf提供了一套标准的,通用的技术去学习,而取代了当前一些基于Web的J2ee UI框架比较片面的技术。将来,Jsf也会被包含到J2EE规范中。相信一些主要的供应商也会对Jsf支持,我们会有更多的资源来帮助我们实现我们的应用程序。

让我们粗略看一下JSF组件模型是如果轻松地构建Web应用程序的,接下来是一个相当简单的应用程序,它将接收客户的姓名并且存储起来,UI非常简单,两个标签,两个文本输入框,一个按钮存储输入信息。生成的用户界面如下图:Figure Intro.1

 
构建用户界面要调用的JSP代码如下,也是我们详细重点讨论的部分:

<f:view>

<h:form id=”customerForm” >

<h:panelGrid columns=”2”>

<f:facet name=”header”>

<h:panelGroup>

<h:outputText id=”header”value=”Customer Name”/>

</h:panelGroup>

</f:facet>

<h:panelGroup>

<h:outputText id=”fNameLabel” value=”First Name:”/>

<h:inputText id=”fName” value=”#{customer.firstName}”/>

</h:panelGroup>

<h:panelGroup>

<h:outputText id=”lNameLabel” value=”Last Name:”/>

<h:inputText id=”lName” value=”#{customer.lastName}”/>

</h:panelGroup>

<h:panelGroup>

<h:commandButton id=”cancel” value=”Cancel”/>

<h:commandButton id=”save” value=”Save”/>

</h:panelGroup>

</h:panelGrid>

</h:form>

这段代码建立了一个Form(包含了其他的组件)并且建立了一系列的子组件。在这组组件中Form是根构成了组件树。在本书以后的内容中,你将学习更多关于组件树的知识,在这里只需知道组件树是组件的集合,并且要知道哪些是父组件,哪些是子组件。当请求到来时JSF会处理它,这些组件会传达这些事件供商业逻辑去处理。

这本书讲述的内容

这本书讲述了利用JSF UI组件模型构造Java Web应用程序。这本书注重实践,但也有足够的编程模式知识使你理解你做的是什么,为什么这样做,它不仅可以使你广泛的理解JSF而且更深入地了解这个框架是如何工作的。

本书也会讲述怎样将你的UI和后端持久层进行集成。在典型的J2EE Web应用程序中,至少存在三个逻辑层:前端或Web层,应用层,数据库层(存储应用层的持久状态)。我们发现当前很多J2EE应用程序都是基于这三层概念构建的。图Intro.2展示了Jsf在这种三层概念中的位置。

 
J2EE应用程序的Web层是基于发送到浏览器的Html,Html可以通过JSP或Servlet动态的生成。Servlet指定普通的Java对象(POJOS:plain old Java Objects)处理商业逻辑,通过JDBC和数据库交互存储数据或找回数据。在企业级的应用程序层是通过会话EJB,实体EJB或两者的结合来实现的。

加上图中的EJB部分,应用程序有四层组成:Web,Jsp/Servlet,EJB,DataBase。JSF填充了JSP/Servlet层,提供了一个基于组件的方式去建立应用程序,JSF提供了一种方式去建立用户界面,并把商业逻辑处理委托给下一层(不如EJB层)。这本书会向你展示怎样建立JSF应用程序与EJB或POJOS交互。图intor.3显示了四层配置的典型的JSF应用程序。这本书不仅仅是一个简单的指南,它更详细的介绍了JSF的技术细节,不如验证,还介绍了JSF的验证机制是如何工作的,这样你也可以建立自己定制的验证。

 
本书的结构

本书分为三个部分,涵盖了Jsf的方方面面,第一部分:Jsf技术:Jsf技术的总体介绍,第二部分:Jsf的元素,介绍了各个Jsf的组件,最后一部分把前两部分综合到一起介绍了Jsf在应用程序中的具体应用。

第一部分:介绍了Jsf的技术方面,从现实模式到典型的Jsf的请求/响应生命周期。这一部分使你广泛的理解Jsf的组织,功能。Jsf的封装,一般的设计模式,对JSF的组件有一个总体的理解。这一部分包含一下各章:

第一章:Jsf模式和技术,这一章从讨论设计模式的实现方面讲述了Jsf技术,同时也把Jsf用Struts,Swing进行了比较。

第二章:Jsf的元素,这一章通过对组成组件模型的各种API进行了简要的介绍来了解JSF的组件模型。这一章也会对下一节提供了概述,如果你对其中的某些部分感兴趣,可以直接跳到讲述该主题的那一章。

第三章:JSF的请求处理生命周期,这一章讲述了JSF响应请求的方式,理解这个生命周期对建立JSF应用程序来说是很重要的。

第二部分:Jsf的元素,从细节上讲述了组成JSF的方方面面,包括组件,事件,验证等等。读过这一部分后,你会对在实践中如何使用JSF有广泛的理解,这一部分中的每一章将把目光投在Jsf组件模型的不同方面。以及这些方面是如何应用到构建实际应用程序中去的。这一部分包含一下各章:

第四章:Jsf配置:这一章教你配置JSF应用程序,讲述face-config.xml、web.xml配置文件,以及怎样设置标签库

第五章:在Jsf中集成Jsp,在这一章讲述Jsf和Jsp通过定制的标签特性如何集成的细节。通过阅读该章的内容,你会理解如何集成,及了解Jsp中定制的标签将成为JSF实现的一部分。

第六章:UI组件,这一章讲述了组件的API,通过这一章你将知道如何使用UI组件来建立你的用户界面,你将适应标准的组件以及它们在典型的JSF应用程序中是如何使用的。你会了解组成组件的各个部分,以及他们在请求/响应生命周期中是如何被调用的。

第七章:导航,动作,监听,这一章讨论了Jsf中的导航和事件模型。当你读完这一章的时候,你会了解Jsf中的导航的工作方式的同时也了解事件以及事件如何管理导航,调用改变后的状态。

第八章:验证和转换,这一章讲述了在你的应用程序中验证你存储的数据使其符合商业层规则的需要。通过这一章你会理解Jsf中验证和转换模式,你将学会使用Jsf内嵌的Validators和Converters,以及建立你自己的Validator,Converter。

第三部分:应用Jsf这一部分讲述了Jsf的实际使用。尤其是与商业层(EJB,POJO)的集成,建立定制的组件生成你自己的用户界面组件。以及转换你现有的Struts应用程序到JSF中去。该部分包含以下各章:

第九章:建立Jsf应用程序,这一章讲述了怎样使用构建企业级应用程序技术集成你应用程序包括Ejb以及POJO通过JDBC集成,通过这一章你将理解怎样建立实际的Jsf应用程序去将数据呈现给浏览器,以及存储用户的数据。

第十章:定制Jsf组件,这一章教你怎样定制你自己的组件,通过这一章的学习,你将学会建立组件,理解用RendrKit来实现自我生成,自我集成技术,你也会理解怎样去验证新的组件,以及怎样产生定制组件调用的应用程序逻辑事件。

第十一章:把Struts应用程序迁移到Jsf,这一章会带你把你的应用程序从Struts下迁移到Jsf中去,你会学会转换你的页面以及应用程序逻辑到Jsf中去。

总结:

对于J2EE应用程序的开放者来说,通过Jsf能够建立可重用的用户界面,和你的商业处理代码进行很好的交互,我们希望你能喜欢这项技术,而且学习到比本书更多的知识。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics