作者介绍: David Geary担任Clarity Training咨询和培训公司总裁,迄今已撰写了8本Java技术书籍,其中包括Prentice Hall出版的畅销书籍Graphic JavaTM 2系列(1999)、Advanced JavaServer Pages(2001)和GoogleTM Web Toolkit Solutions(2008)等。David是JSF专家组和Java Champion的成员,他经常在多个软件会议上发表重要演讲,已三次荣膺JavaOne Rock Star称号。 Cay Horstmann是Core Java, Volume I&II, Eight Edition(Prentice Hall,2008)的主要作者,是圣何塞州立大学计算机科学系教授,也是Java Champion成员,经常在多个计算机行业会议上发表重要演讲。
David和Cay曾参加2002年度JavaOne大会,当二人在大会上聆听到JavaServer Faces (JSF)技术时都十分激动,心情久久不能平静。David和Cay在客户端Java编程方面都拥有丰富经验;此前David曾撰写Graphic JavaTM,Cay曾撰写Core JavaTM(均由Sun Microsystems出版社出版)。两人发现,用servlet和JSP(JavaServer Pages)编写Web程序不够简明直观,令人感到厌烦。而JSF为Web应用程序提供了十分友好的界面,使程序员能够聚精会神地考虑文本字段和菜单,而不必围绕“页面跳转”和“请求参数”而苦思冥想。当David和Cay向Sun Microsystems出版社提出着书的想法时,该出版社立即给予热情回应,并建议二人合着这本JSF书籍。 JSF专家组(David便是该专家组的成员之一)于2004年发布了JSF 1.0规范和参考实现,随即很快发布了修订版本1.1。2006年发布的增量版本JSF 1.2对修订版本进行了诸多完善和整理,新增了大量便捷功能。 最初的JSF规范平凡无奇,与“完美”相去甚远,程序员在实际工作中根本没兴趣使用它所提供的用例。最初的规范未对API设计给予足够的重视,迫使程序员硬着头皮编写枯燥无味的复杂代码。对GET请求的支持也僵硬笨拙。错误处理方式令人痛苦不堪,开发人员们默默地诅咒着“炼狱般的堆栈跟踪”。 当时的JSF也并非一无是处:它具有高度的可扩展能力;而可扩展能力是框架开发人员十分看重的特点。这些人员开发了嵌入到JSF中的最前沿开源软件,如Facelets、Ajax4jsf、Seam、JSF Templates、Pretty Faces、RichFaces和ICEFaces等。 JSF 2.0于2009年发布。JSF 2.0吸取了开源框架的经验,将这些宝贵经验作为基石;上述框架几乎所有的创作者都加入JSF 2专家组中。因此JSF 2.0与JSF 1.0具有很大的不同,JSF 2.0是由历经长期严峻考验而走向成熟的实用开源项目融合而成的。 JSF 2.0的使用比JSF 1.0更简单,并更好地集成在Java EE技术栈中。JSF 2.0几乎对JSF 1.0的每一部分都做了改进和完善。另外,JSF 2.0规范目前支持Ajax和REST等新Web技术。 JSF现已蜕变为卓越的服务器端Java Web框架,兑现了自己的大部分承诺。在设计Web用户界面时,程序员确实可在表单上放置组件,然后将它们与Java对象关联起来,未必需要结合使用代码和标签。JSF的一个强大之处在于,它使用可扩展的组件模型,而且现有大量的第三方组件可供使用。灵活的框架设计使其能充分扩展,以便吸纳新技术。 JSF是规范而非产品,用户可从多个供应商那里获得JSF实现、组件和工具,不必完全依赖于某个供应商。我们对JSF 2.0的问世感到欢欣鼓舞,我们也希望,当你通过学习这门技术来提高Web编程效率时,能与我们共享无尽的乐趣。 关于本书 本书面向负责实现用户界面和业务逻辑的Web开发人员。官方JSF规范文档内容丰富,堪称鸿篇巨制,主要供框架实现人员和撰写大篇幅书籍的作者参阅;本书的编排方式与官方JSF规范文档明显不同。JSF建立在servlet基础之上,但在JSF开发人员看来,servlet仅是底层技术而已。熟悉servlet、JSP或Struts等技术对学习本书有帮助,但不熟悉这些技术的读者也可以利用本书收到圆满的学习效果。 本书前半部分(即第1章~第7章)浓墨重彩地描述JSF标签。JSF标签与HTML表单标签类似,是JSF用户界面的基本构建块。只要你掌握了基本HTML技能(网页设计范畴)和标准Java编程(应用程序逻辑范畴),就可以使用JSF标签构建Web应用程序。 本书前半部分包含以下主题: ●设置编程环境(第1章) ●将JSF标签连接到应用程序逻辑(第2章) ●页面间导航(第3章) ●使用标准JSF标签(第4章) ●将Facelets标签用于模板(第5章)(新增内容) ●数据表(第6章) ●转换和验证输入(第7章) 从第8章起开始详细讨论JSF编程,包括如何执行高级任务以及如何扩展JSF框架。后半部分的主题如下: ●事件处理(第8章) ●构建复合组件--由较简单组件构成的具有复杂行为的可重用组件(第9章) (新增内容) ●Ajax(第10章)(新增内容) ●实现自定义组件(第11章) ●连接到数据库和其他外部服务(第12章) 本书的收官章节“问答”(第13章)旨在解答常见问题,我们建议你在熟悉掌握JSF的基础知识之后立即浏览一下该章的内容。该章包含有关调试和日志记录的有用说明,也提供了JSF未纳入的功能(如文件上传、弹出菜单和长表的分页器组件等)的实现细节和工作代码。 第3版中的所有章节都经过全面修订和完善,强调了JSF 2.0中的新功能和改进功能。第3版新增了第5章、第9章和第10章。 所需软件 本书需要的所有软件都可以免费获得。可使用支持Java EE 6(如GlassFish v3)的应用服务器,或带有JSF实现的servlet运行器(例如Tomcat 6)。应用服务器软件可在Linux、Mac OS X、Solaris和Windows上运行。Eclipse和NetBeans都对GlassFish或者Tomcat环境中的JSF开发提供了全面支持。 Web支持 可以登录http://www.tupwk.com.cn/downpage来获得以下信息: ●本书示例的源代码 ●一个JSF Overview文档,其中包含一些十分有用的信息