JSF是表示层框架的标准,Hibernate是一个比较完善的对象关系映射工具,Spring则提供了一个Web应用的轻量级的解决方案。在开发一个多层的Java EE应用程序时,这些框架可谓是相辅相成、相得益彰,可以称得上是开发轻量级Java EE应用的三剑客。另外,AJAX是一种非常流行的改善用户体验的技术,但目前国内外还没有一本完整地介绍组合这三种框架及AJAX来开发应用程序的书籍,本书是在这方面的一个尝试。\r\n 本书详尽地介绍了JSF的基本结构和工作原理、标签、验证与转换、事件处理、国际化编程及IoC;对象关系映射的概念、Hibernate的结构及与JSF的集成;Spring的结构、AOP、Spring与JSF和Hibernate的集成;常用IDE(Eclipse和MyEclipse)的使用方法等内容。\r\n 本书的特点主要是从编程实践的角度来介绍这些框架的基本原理,以及用示例演示如何具体应用这些框架来开发一个Web应用程序。在介绍各种框架时,对涉及到的Web开发中容易遇到的疑难问题尽可能给出浅显易懂的解释,其目的是帮助想利用这些框架进行开发的人员尽快进入实战状态。
第1章 为什么要学习框架及学习什么样的框架 \r\n第2章 JSF与Web应用程序 \r\n第3章 JSF应用程序开发入门 \r\n第4章 JSF中的请求处理 \r\n第5章 JSF的体系结构 \r\n第6章 标准用户界面组件 \r\n第7章 表达式语言与托管Bean \r\n第8章 JSF中的导航 \r\n第9章 JSF与应用程序模型层的集成 \r\n第10章 JSF的事件处理 \r\n第11章 JSF中的转换 \r\n第12章 JSF中的验证 \r\n第13章 JSF的国际化编程 \r\n第14章 JSF与Tiles框架的集成 \r\n第15章 JSF访问数据库 \r\n第16章 应用程序中的异常处理 \r\n第17章 应用程序的日志 \r\n第18章 JSF与AJAX集成 \r\n第19章 ORM及其Hibernate实现 \r\n第20章 JSF与Hibernate的集成 \r\n第21章 JSF与Spring和Hibernate的集成 \r\n第22章 使用Eclipse和MyEclipse工具 \r\n第23章 AOP及事务管理 \r\n第24章 权限系统示例应用程序 \r\n第25章 办公用品管理系统示例程序 \r\n第26章 应用程序的安全性
罗会波 高级工程师,IBM认证DB2数据库系统管理员。早年从事中学物理教学工作,后在亿利达(Elite)集团明泰R/D部(深圳)从事通信产品研发工作。1996年底进入税务系统从事信息化工作至今。
在亿利达工作期间开始接触汇编语言编程;在税务系统主持或参与了“湖北省国税局纳税大厅Web查询系统”、“全国税务征管软件Ctais纳税人查询系统”等数个省局及市局税务信息化项目的开发工作;参与了湖北省国税局内部教材《国税系统办公自动化实用指南》一书的编撰工作;曾在《计算机世界》、《电脑爱好者》及《电脑编辑技巧与维护》等报刊杂志及赛迪风上发表过包括《Struts原理与实践》系列讲座(该系列曾长期占据赛迪网技术文章排行榜TOP10)在内的多篇原创及翻译的IT技术文章,文风严谨,又不失幽默,受到广大读者的一致好评。
为什么要写这本书
早在2004年,我根据在项目中使用Struts的经验,写出了一篇名为“Struts的原理与实践”的文章,投到某杂志社,该杂志的编辑觉得文章还过得去,只是认为仅一篇文章会给人一种意犹未尽的感觉,他建议我写一个系列。后来,该杂志因故停刊,杂志编辑说:“其实,可以将这些文章写成一本书。”还热心地说,如果要出书,他可以帮助推荐给出版社的编辑。
由于当时我忙于其他事务,没有时间写书。那时恰逢赛迪网征集这方面的文稿,就把这些写成了的文章寄给赛迪网,文章在赛迪网上发表后,引起了较大的反响,在相当长的一段时间里排在该网站的技术应用栏目的技术文章排行榜的前列,并被许多网站转载。
后来,当有空的时候,就想起了那位编辑关于写书的建议。我就在想,写一本什么样的书呢?光阴荏苒,很快,两年的时间就悄无声息地过去了。大家不要忘了,这个时代对Java来说是一个礼崩乐坏的时代。历史反复证明,这样的时代也是牛人辈出的时代。随之,各种新的思想、新的技术井喷一样的呈现在人们的面前。
在这期间,Java世界也已经和正在发生剧烈的变化。轻量级的J2EE应用程序开发已经成为一种时尚。框架也不再是Struts的一统天下,各种新的框架层出不穷。在这些框架中最引人注目的是JSF,居然成了Java EE规范的一部分,这在框架的发展史上好像是绝无仅有的。
在选择该书的表现层框架时,我是这样考虑的,虽然目前国内SSH方兴未艾,但JSF不仅是标准,有众多大公司的支持,而且在实践中也日益成熟起来,如常被人们诟病的早期版本中的那些错误在JSF 1.2版中都得到了很好的解决。它的组件模型、事件驱动及依赖注入等比老式的框架如Struts的确提供了更高的抽象和更强大的功能。国外的调查也表明它的市场占有率在不断扩大。从论坛的帖子也可以看出,如果是做一个新项目一般也是建议使用JSF。不过,总的说来,与国外人们对JSF的关注程度相比,国内就显得冷清多了。表现在论坛中的帖子不多,市面上关于它的图书更是少之又少。这种局面是很不正常的,是不是又要等到落后一大截后,才想起来追赶呢?到那时可能就悔之晚矣。我也希望本书在改变这种不相称的局面方面起到些许作用。
而且,框架也不再局限于表示层,而是向J2EE多层应用程序的各个层面发展,如集成层就出现了Hibernate(这里要说明一下,有的人不认为Hibernate是框架)。Spring就更是涉及到应用程序的多个层。这些框架的涌现,一方面给了开发者更多的选择,另一方面也增加了开发人员的学习量。特别是由于各种框架都有其自己最擅长的一面,实际应用中往往会组合使用多个框架,以便充分发挥它们的特长,在实践中形成了一些常见的组合,如Struts+Spring+Hibernate(即人们常说的SSH)、JSF+Spring+Hibernate等组合,这就更进一步地加大了初学者的学习难度。
反观市面上有关这方面的一些书籍。它们大多是分门别类地介绍单一的技术。比如专门介绍Struts的书、专门介绍JSF的书、专门介绍Hibernate的书以及专门介绍Spring方面的书。这些书的写法往往是这样的,即除了介绍某种单一的技术外,其他部分可能就是根据作者的特长随意使用一些其他的技术,比如介绍Struts的书,它的数据访问部分不是直接使用JDBC的API就是使用EJB,而不会采用编程实践中采用得较多的SSH组合。偶尔看到一些书介绍与其他框架组合使用的书,如一些Spring书籍中介绍Spring与Struts的组合、Spring与Hibernate的组合,往往是蜻蜓点水般的一般性介绍。可以说,到目前为止,无论是国内还是国外,都还没有一本真正意义上的较全面地介绍用JSF+Spring+Hibernate框架进行开发的书籍,而实际的开发过程中却是综合应用这些技术(例如,使用AJAX来改善用户体验),这样就难免学用脱节。有没有办法帮助初学者尽快掌握这些技术呢?想到这里眼前豁然一亮。
何不写这样一本书呢?从编程的实践角度出发,比较全面地介绍JSF框架的基础知识及其他框架最基本、最常用的知识,以及在一个真实的开发过程中如何综合地应用它们。以便尽快引领初学者综合应用这些框架。本书就是这种想法的一个尝试。
为本书的问世做出贡献的人们
2006年国庆节前的一天,我在一个编程论坛中看到一个清华大学出版社征集书稿的帖子,就按照帖子给出的邮件地址给发帖子的编辑“冰冰”发了一个Email,在该Email中谈了写这本书的一些初步打算。本没有抱很大的希望,出乎意料的是很快就收到编辑的来信,编辑的真名叫陈冰,他本人原来就是一位计算机图书作者。他让我写一份简历,连同以前发表过的一些文章一起发给他。我就简单地罗列了一下自己的学习和工作经历,并收集了一下以前发表的文章给他寄去。因为我以前从未写过书,更担心自己才疏学浅,因此把自己的一些顾虑也写在Email中。这里不得不提的是,他的回信中的一句鼓励的话:“英雄不问出处!”让我至今难忘,好一个英雄不问出处,正是这份信任,让我们开始了接下来的坦诚合作。坦率地说,没有陈冰先生和出版社领导们的这份信任就不会有该书的问世。
几封Email往来,一个初步的目录和样章就出来了,书名也商量好了。国庆节后不久正式的出版合同就签订了。拿到合同后,才发现自己正处于一个多事之秋。工作上,金税工程系统升级、综合征管系统数据省级集中等工作接踵而至;家庭方面则因为要迁居而装修房子。写书稿只有晚上和节假日才有时间。
凡事空想容易,实干难。写书尤其如此。一方面因为时间紧张,进度很难保证。另一方面又往往为找不到好的思路和合适的例子来把问题讲得尽量浅显易懂而着急,深感压力沉重。着急就容易上火,说起话来分贝值就免不了比平时大了许多,我的妻子在这方面的感受可能最深,她为此受了不少委屈。此外,在写稿期间,她承担了所有的家务、悉心照料我和儿子的饮食起居。为我分担了不少压力。平心而论,本书也凝聚着她的不少心血。
能够顶住压力完成本书,还要感谢我的父母,是他们的言传身教使我懂得了一分耕耘,一分收获;不怕慢,只怕站等这些质朴而让人受用终身的道理;是他们的淳朴善良、乐于助人的品格,让我体会到予人玫瑰、手有余香的真谛,愿意将自己在学习和工作中的一些心得拿出来与大家分享。
能够完成本书,还要感谢教育过我的老师们,他们不仅传授给我知识,培养了我的技能,还让我懂得了业精于勤荒于嬉,行成于思毁于随的道理。
能够完成本书,还要感谢领导的关怀和同事们的帮助。是领导们为我提供了不少学习的机会,使得我有幸接触到一些新的技术,同时也给我提供了主持或参与一些项目的机会,使得我可以在实践中应用所学的知识。在该书的书写期间我的同事们主动分担了更多的工作任务,同事杨蜜还帮助校对了部分章节的文稿,找出了其中的一些笔误及标点符号错误。在此,再一次对所有为本书做出贡献的人们表示诚挚地感谢!
本书的结构与写法
第1章概括地介绍了J2EE应用程序的基本知识,以及一些常用框架的产生。
第2章介绍了Web应用程序的一些基础知识,为正式介绍JSF做一些必要的铺垫。
第3-15章介绍了JSF的一些基本知识。包括JSF的请求处理生命周期、基本构成、JSF标签、表达式语言与托管Bean、转换与验证,国际化编程,以及与Tile的集成和访问数据库等。
第16章介绍J2EE应用程序的异常处理。
第17章介绍了应用程序中的日志记录方法。
第18章介绍JSF与AJAX的集成,其内容是如何利用AJAX来改善JSF应用程序的用户体验。
第19-20章主要介绍Hibernate的基本知识及其与JSF的集成。其中,第19章介绍了对象关系映射的基本概念和面临的一些问题,以及Hibernate的基本构成,和一些常见的对象关系映射。还介绍了检索对象的方法。第20章则介绍Hibernate和JSF的集成。
第21章主要介绍Spring的一些基本知识及与JSF和Hibernate的集成。
第22章介绍常见的IDE(Eclipse和MyEclipse组合)的使用。
第23章对面向方面编程(AOP)做了一个简单的介绍,并介绍了事务管理的有关内容。
第24-26章是综合应用示例。其中,第24章介绍的是一个基于角色的访问控制系统,在该示例中,以一个程序员的眼光来看JSF、Hibernate和Spring在一个比较真实的应用中各自所处的位置及它们间的相互关系。第25章介绍的是一个名为办公用品管理系统的示例应用程序,在该示例中,从软件工程的角度出发,来演示一个项目的需求分析、设计、编码、测试等各个阶段。第26章是讲解应用程序的安全性。主要介绍了Java安全架构的一些基本知识。结合示例应用介绍了如何防止用户绕过登录环节;并介绍了口令加密的基本方法。
本书在写法上也做了一些尝试,既不像有的书高高在上地专门讨论一些高深的概念,使读者看完全书后都不容易做出一个简单的应用程序;也不像有的书全部是一些示例的杂乱堆砌,搞得一本书没有主线、没有灵魂。本书采用的方式是对那些最基本的概念先做一些解释,用它们去指导实践,然后用一些简单的示例来检验这些理论方面的东西。采用这种学用结合的方式可能更有助于读者对那些基本知识的理解。
本书在写法上的另一个特点,就是不平均使用力量。对那些在编程实践中经常容易遇到的,也是论坛中被频繁问及的一些问题,会花费更多的笔墨去解释。这方面的例子很多,比如,讲MVC时就有很多人对耦合与解耦的概念产生模糊认识;再如,关于回调的理解、关于乱码的问题,以及Java中的日期时间问题等等,我都会不惜笔墨,设法尽可能把它们讲得浅显易懂,为读者克服这些障碍提供一些切切实实的帮助。
无封面