轻量级Java EE企业应用实战(第3版)——Struts 2+Spring 3+Hibernate整合开发的内容简介
本书是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。
本书介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了3.6.0。本书还全面介绍了Servlet 3.0的新特性,以及Tomcat 7.0的配置和用法,本书的示例应该在Tomcat 7.0上运行。
本书重点介绍如何整合Struts 2.2+Spring 3.0+Hibernate 3.6进行Java EE开发,主要包括三部分。第一部分介绍Java EE开发的基础知识,以及如何搭建开发环境。第二部分详细讲解Struts 2.2、Spring 3.0和Hibernate 3.6三个框架的用法,介绍三个框架时,从Eclipse IDE的使用来上手,一步步带领读者深入三个框架的核心。这部分内容是笔者讲授“疯狂Java实训”的培训讲义,因此是本书的重点部分,既包含了笔者多年开发经历的领悟,也融入了丰富的授课经验。第三部分示范开发了一个包含7个表、表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,希望让读者理论联系实际,将三个框架真正运用到实际开发中去,该案例采用目前最流行、最规范的Java EE架构,整个应用分为领域对象层、DAO层、业务逻辑层、MVC层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了IDE无关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,最大限度地满足读者的需求。
本书不再介绍Struts 1.X相关内容,如果读者希望获取《轻量级J2EE企业应用实战》第一版中关于Struts 1.X的知识,请登录网站下载。当读者阅读此书时如果遇到技术难题,也可登录网站发帖,笔者将会及时予以解答。
阅读本书之前,建议先认真阅读笔者所著的《疯狂Java讲义》一书。本书适合于有较好的Java编程基础,或有初步JSP、Servlet基础的读者。尤其适合于对Struts 2、Spring、Hibernate了解不够深入,或对Struts 2+Spring+Hibernate整合开发不太熟悉的开发人员阅读。
前 言
经过多年沉淀,Java EE平台已经成为电信、金融、电子商务、保险、证券等各行业的大型应用系统的首选开发平台。目前Java行业的软件开发已经基本稳定,这两三年内基本没有出现什么具有广泛影响
力的新技术。Java EE开发大致可分为两种方式:以Spring为核心轻量级Java EE企业开发平台;以EJB 3+JPA为核心的经典Java EE开发平台。无论使用哪种平台进行开发,应用的性能、稳定性都有很好的保证,开发人群也有很稳定的保证。
本书介绍的开发平台,就是以Struts 2.2+Spring 3.0+Hibernate 3.6(实际项目中可能以JPA来代替Hibernate )为核心的轻量级Java EE,这种组合在保留经典Java EE应用架构、高度可扩展性、高度可维护性的基础上,降低了Java EE应用的开发、部署成本,对于大部分中小型企业应用是首选。在一些需要具有高度伸缩性、高度稳定性的企业应用(比如银行系统、保险系统)里,以EJB 3+JPA为核心的经典Java EE应用则具有广泛的占有率。本书的姊妹篇《经典Java EE企业应用实战》主要介绍了后一种Java EE开发平台。
本书主要升级了《轻量级Java EE企业应用实战》的知识,采用最新的Tomcat 7作为Web服务器,全面而细致地介绍了Servlet 3.0的新特性,并将Struts升级到Struts 2.2.1,Spring升级到3.0.5,Hibernate升级到3.6.0。书中详细介绍了Spring和Hibernate的“零配置”特性,并充分介绍了Struts 2的Convention(约定)支持。本书不仅介绍了Spring 2.x的AOP支持,详细介绍了Spring 2.x中Schema配置所支持的util、aop、tx等命名空间,还简要讲解了AspectJ的相关内容。本书也重点介绍了Spring 3.0的新功能:SpEL,SpEL不仅可以作为表达式语言单独使用,也可与Spring容器结合来扩展Spring容器的功能。
本书创作感言
笔者首先要感谢广大读者对本书第2版的认同,在将近2年的时间内,本书第2版的销量高达178万码洋,得到无数Java学习者的认同,成为Java EE开发者首选的经典图书。考虑到目前技术的升级,笔者现将本书的全部技术升级到最新版、最前沿,以飨读者。
还有一个值得介绍的消息:本书姊妹篇《经典Java EE企业应用实战》(由电子工业出版社出版,ISBN 978-7-121-11534-9)现已上市。学习本书时可以采用“轻经合参”的方式来学习:“轻”指的是以“SSH”整合的轻量级Java EE开发平台,“经”指的是以“EJB 3+JPA”整合的经典Java EE开发平台;这两种平台本身具有很大的相似性,将两种Java EE开发平台结构放在一起参考、对照着学习,能更好地理解Spring、Hibernate框架的设计思想,从而更深入地掌握它们。与此同时,也可以深入理解EJB 3与Spring容器中的Bean、EJB容器与Spring容器之间的联系和区别,从而融会贯通地掌握EJB 3+JPA整合的开发方式。
经常有读者写邮件来问笔者,为何你能快而且全面地掌握各种Java开发技术?笔者以前做过一些零散的回复。这里简单地介绍笔者学习Java的一些历史与方法,希望广大读者从中借鉴值得学习的地方,避开一些弯路。
笔者大约是1999年开始接触Java,开始主要做点Applet玩(当时笔者对Applet做出来的动画十分倾心)。后来开始流行ASP、JSP,笔者再次喜欢上ASP、JSP那种极其简单的语法、短期内的快速上手,后来断断续续用ASP、JSP写了多个小型企业网站、BBS、OA系统之类——不知道其他人是什么经历,笔者选择编程一方面是因为个人爱好和“自豪感”(觉得能做出各种软件,有点成就感),另一方面是因为编写软件可以轻易地卖点钱(是不是很俗?),但这个目的笔者无法回避——由于出生在湖北一个贫穷的乡下,所以在同济念书时笔者常常为了开饭而写代码,或许有一些程序员和笔者会有相同的感触。
在后来的开发过程中,笔者发现纯粹的JSP开发虽然前期很方便,但由于开发时代码重复得厉害,所以后期升级、维护很痛苦,于是开始大规模地修改自己写的一堆“垃圾”代码,不断地思考怎样对JSP脚本进行提取、封装到Java Bean中,这个过程并不顺利,经常遭遇各种性能问题、并发问题。原本可以运行良好的应用,反而被改得经常出现问题。
大约到了2000年,笔者接触到EJB,对EJB许下的“承诺”无比欣羡,于是义无反顾地投入EJB的怀抱,不过EJB的学习并不顺利,当时用的好像是WebLogic 5的服务器,那时候觉得WebLogic 5所报的错误晦涩、难以阅读,动辄几屏的错误信息,让人感觉很有压力。
不过笔者是一个顽固的人,遇到错误总是不断地修改、不断地尝试,在这样的尝试中,不知不觉中,天色已经发白。说来惭愧,第一个Hello World级的Entity EJB居然花了将近一个月的时间才弄完(绝不建议读者从EJB 1.1或EJB 2开始学习,这只会给学习徒增难度,而且现在EJB 1.1、EJB 2都已被淘汰)。在那段时间内,笔者连最心爱的C几乎完全没碰过。
在接下来的2年多时间内,笔者一直沉浸在EJB中,不断地搜寻各种关于EJB的资料、不断地深入钻研着关于EJB规范、EJB的运行、EJB容器的运行机制。随着时间的流逝,EJB、EJB容器的运行原理逐渐明朗起来。
那是一段让人怀念的、“神话”般的岁月,年轻的人,似乎拥有无穷的精力,那也是笔者Java技术增长最迅速的3年,笔者的Java EE功底也是在那3年内打下的,后来接触的各种“新”技术只是在那个基础上“修修补补”,或者“温故而知新”。
2004年初,笔者开始接触到Spring框架,从接触Spring的第一天开始,直到今天,笔者一直觉得Spring和EJB之间有很大的相似性:
Spring本身也是一个容器,只是EJB容器管理的是EJB,Spring容器管理的是普通Java对象。
Spring对Bean类的要求很少,EJB容器对EJB的要求略多一些——所以初学者学习EJB上手较难,但学习Spring就简单得多。
因为找到这种类比性,笔者学习Spring时,总是不断地将EJB与Spring进行类比,然后再找出它们之间的不同之处。由于采用了这种“温故而知新”的学习方式,所以笔者很容易就理解了Spring的设计,而且更加透彻。
很多Java学习者在学习过程中往往容易感觉Java开发内容纷繁芜杂,造成这种感觉的原因就是因为没有进行很好的归纳、总结、类比。为了避免“知识越学越多”的混乱感,读者应该充分利用已掌握的知识,温故而知新——一方面对已有的知识进行归纳、总结,另一方面将新的内容与已掌握的知识进行类比,这样既能把已有的知识掌握得更有条理、更系统,也能更快、更透彻地掌握新的知识。
出于以上理由,笔者在介绍非常专业的编程知识之时,总会通过一些浅显的类比来帮助读者更好地理解。“简单、易读”成为笔者一贯坚持的创作风格,也是疯狂Java体系丛书的特色。另一方面,疯狂Java体系图书的知识也很全面、实用。笔者希望读者在看完疯狂Java体系的图书之后,可以较为轻松地理解书中所介绍的知识,并切实学会一种实用的开发技术,进而将之应用到实际开发中。如果读者在学习过程中遇到无法理解的问题,可以登录疯狂Java联盟与广大Java学习者交流,笔者也会通过该平台与大家一起交流、学习。
本书有什么特点
本书保持了《轻量级Java EE企业应用实战》第2版简单、实用的优势,同样坚持让案例说话、以案例来介绍知识点的风格,在书的最后同样示范开发了企业工作流案例,希望读者通过该案例真正步入实际企业开发的殿堂。
本书依然保留了《轻量级J2EE企业应用实战》第2版的三个特色。
1.经验丰富,针对性强
笔者既担任过软件开发的技术经理,也担任过软件公司的培训导师,还从事过职业培训的专职讲师,这些经验影响了笔者写书的目的,不是一本学院派的理论读物,而是一本实际的开发指南。
2.内容实际,实用性强
本书所介绍的Java EE应用范例,采用了目前企业流行的开发架构,绝对严格遵守Java EE开发规范,而不是将各种技术杂乱地糅合在一起号称Java EE。读者参考本书的架构,完全可以身临其境地感受企业实际开发。
3.高屋建瓴,启发性强
本书介绍的几种架构模式,几乎是时下最全面的Java EE架构模式。这些架构模式可以直接提升读者对系统架构设计的把握。
本书写给谁看
如果你已经掌握了Java SE内容,或已经学完了《疯狂Java讲义》一书,那么你非常适合阅读此书。除此之外,如果你已有初步的JSP、Servlet基础,甚至对Struts 2、Spring 3.0、Hibernate 3.6有所了解,但希望掌握它们在实际开发中的应用,本书也将非常适合你。如果你对Java的掌握还不熟练,则建议遵从学习规律,循序渐进,暂时不要购买、阅读此书。