标题：Java EE轻量级解决方案——S2SH
图书信息
高等院校软件专业方向系列教材  Java EE轻量级解决方案——S2SH
青岛东合信息技术有限公司，青岛海尔软件有限公司编著
ISBN 978-7-121-13554-5
2011年7月出版
定价：59.00元
16开
512页
内 容 简 介
本书介绍了Java EE轻量级的三个开源框架：Struts2、Hibernate和Spring。其中在Struts2部分主要讲解MVC设计思想，Struts2的处理流程及配置，Struts2常用控制器组件，以及Struts2常用标签库的使用。在Hibernate部分主要讲解O/R Mapping的设计理念，Hibernate对O/R Mapping的支持，Hibernate的配置及多种关系映射的实现，以及HQL查询数据。在Spring部分主要讲解IoC的原理，Spring对Bean的管理机制，Spring AOP编程，以及声明事务的配置和管理。
本书重点突出、偏重应用，结合理论篇的实例和实践篇对贯穿案例进行讲解、剖析及实现。实践篇贯穿案例在线考试系统采用S2SH框架，以任务驱动及依次累加的方式，实现一个完整的项目并贯穿整本书的技术知识点，使读者加深Struts2、Hibernate、Spring框架的应用及整合技巧，全面提高动手能力。
本书适应面广，可作为本科计算机科学与技术、软件外包专业、高职高专计算机软件、计算机网络、计算机信息管理、电子商务和经济管理等专业的程序设计课程的教材。
前  言
随着IT产业的迅猛发展，企业对应用型人才的需求越来越大。“全面贴近企业需求，无缝打造专业实用人才”是目前高校计算机专业教育的革新方向。
该系列教材是面向高等院校软件专业方向的标准化教材。教材研发充分结合软件企业的用人需求，经过了充分的调研和论证，并充分参照多所高校一线专家的意见，具有系统性、实用性等特点。旨在使读者在系统掌握软件开发知识的同时，着重培养其综合应用能力和解决问题的能力。
该系列教材具有如下几个特色。
1. 以应用型人才为导向来培养学生
强调实践：本系列教材以应用型软件及外包人才为培养目标，在原有体制教育的基础上对课程进行了改革，强化“应用型”技术的学习。使学生在经过系统、完整的学习后能够达到如下要求：
 具备软件开发工作所需的理论知识和操作技能，能熟练进行编码工作，并掌握软件开发过程的规范；
 具备一定的项目经验，包括代码的调试、文档编写、软件测试等内容；
 相当于一年的软件开发经验。
2. 以实用技能为核心来组织教学
二八原则：遵循企业生产过程中的“二八原则”，即企业生产过程中80%的时间在使用20%的核心技术，强调核心教学，即学生在学校用80%的学习时间来掌握企业中所用到的核心技术，从而保证对企业常用技术的掌握。教材内容精而专，同时配以知识拓展和拓展练习，以满足不同层次的教学和学习需求。
3. 以新颖的教材架构来引导学习
自成体系：本系列教材采用的教材架构打破了传统的以知识为标准编写教材的方法，采用“全真案例”和“任务驱动”的组织模式。
 理论篇：即最小教学集，包含了“二八原则”中提到的常用技术，以任务驱动引导知识点的学习，所选任务不但典型、实用，而且具有很强的趣味性和可操作性，引导学生循序渐进地理解和掌握这些知识和技能，培养学生的逻辑思维能力，掌握利用开发语言进行程序设计的必备知识和技巧。
 实践篇：多点于一线，以完整的具体案例贯穿始终，力求使学生在动手实践的过程中，加深课程内容的理解，培养学生独立思考和解决问题的能力，并配备相关知识的拓展讲解和拓展练习，拓宽学生的知识面。
 结构灵活：本系列教材在内容设置上借鉴了软件开发中“低耦合高内聚”的设计理念，组织架构上遵循软件开发中的MVC理念，即在课程的实施过程中各高校可根据自身的实际情况（课程配比、时间安排、学生水平、教学情况等），在保证最小教学集的前提下可对整个课程体系进行横向（章节内容）、纵向（章节）裁剪。
4. 提供全面的教辅产品来辅助教学实施
为充分体现“实境耦合”的教学模式，方便教学实施，另外还开发了可配套使用的项目实训教材和全套教辅产品，可供各院校选购：
项目篇：多线于一面，以辅助教材的形式，提供适应当前课程（及先行课程）的综合项目，遵循软件开发过程，进行讲解、分析、设计、指导，注重工作过程的系统性，培养学生解决实际问题的能力，是实施“实境”教学的关键环节。
立体配套：为适应教学模式和教学方法的改革，本系列教材提供完备的教辅产品，主要包括教学指导、实验指导、电子课件、习题集、实践案例等内容，并配以相应的网络教学资源。教学实施方面，提供全方位的解决方案（课程体系解决方案、实训解决方案、教师培训解决方案和就业指导解决方案等），以适应软件开发教学过程的特殊性。
本系列教材由青岛东合信息技术有限公司和青岛海尔软件有限公司共同研制，历时两年，参与编著的有韩敬海、丁春强、赵克玲、高峰、张幼鹏、张旭平、孙更新、宾晟、胡芳、邵峰晶、于忠清、张磊、侯天超、曹宝香、崔文善、王成端等。本书的特约策划人为吕蕾女士。参与本书编写工作的还有：青岛农业大学、潍坊学院、青岛大学、山东科技大学、曲阜师范大学、济宁学院、中国海洋大学、济宁医学院等高校，期间得到了各合作院校专家及一线教师的大力支持和协作。在此技术丛书出版之际要特别感谢给予我们开发团队大力支持和帮助的领导及同事，感谢合作院校的师生给予我们的支持和鼓励，更要感谢开发团队每一位成员所付出的艰辛劳动。iTeacher@ 教研组
2011年6月
目 录
理论篇 1
第1章  Java EE应用 2
1.1  Java EE概述 4
1.1.1  Java EE应用分层模型 4
1.1.2  Model1与Model2 5
1.1.3  MVC思想及其优势 6
1.2  自定义MVC框架 7
1.2.1  实现控制器 7
1.2.2  实现加法器功能 10
1.3  Java EE架构技术 13
1.3.1  JSP&Servlet 13
1.3.2  Struts2介绍 13
1.3.3  Hibernate介绍 14
1.3.4  Spring介绍 14
1.3.5  EJB3.0介绍 14
小结 15
练习 15
第2章  Struts2基础 17
2.1  Struts2概述 19
2.1.1  Struts2起源背景 19
2.1.2  Struts2框架结构 19
2.1.3  Struts2控制器组件 20
2.1.4  Struts2的配置文件 21
2.1.5  Struts2的标签库 23
2.1.6  Struts2的处理步骤 23
2.2  基于Struts2的加法器 23
2.2.1  配置应用环境 23
2.2.2  创建输入视图 25
2.2.3  实现业务逻辑类 25
2.2.4  创建业务控制器 26
2.2.5  配置业务控制器 27
2.2.6  创建结果视图 28
2.2.7  运行 29
小结 29
练习 30
第3章  Struts2深入 31
3.1  配置文件详解 33
3.1.1  常量配置 33
3.1.2  包配置 35
3.1.3  命名空间配置 36
3.1.4  包含配置 38
3.2  Action详解 39
3.2.1  Action实现 39
3.2.2  Action访问ActionContext 46
3.2.3  Action直接访问Servlet API 49
3.2.4  Action的配置 51
3.2.5  动态方法调用 52
3.2.6  通配符配置 54
3.3  处理结果 56
3.3.1  结果处理流程 57
3.3.2  result配置 57
3.3.3  result类型 59
3.3.4  动态result 63
3.4  异常处理 64
3.4.1  Struts2异常处理机制 64
3.4.2  异常的配置 65
小结 66
练习 67
第4章  Struts2标签库 69
4.1  Struts2标签库概述 71
4.1.1  标签库简介 71
4.1.2  标签库的组成 71
4.1.3  导入Struts2标签库 72
4.2  Struts2中使用OGNL 73
4.2.1  OGNL与值栈 73
4.2.2  OGNL语法 76
4.2.3  OGNL集合表达式 77
4.3  数据标签 78
4.3.1  property标签 79
4.3.2  param标签 80
4.3.3  bean标签 80
4.3.4  set标签 83
4.3.5  include标签 84
4.3.6  url标签 85
4.4  控制标签 87
4.4.1  if/elseif/else标签 88
4.4.2  iterator标签 89
4.5  主题和模板 92
4.5.1  主题 93
4.5.2  模板 95
4.6  表单标签 95
4.6.1  checkboxlist标签 96
4.6.2  datetimepicker标签 97
4.6.3  doubleselect标签 99
4.6.4  optiontransferselect标签 101
4.6.5  optgroup标签 102
4.7  非表单标签 104
4.7.1  actionerror和actionmessage标签 104
4.7.2  tree和treenode标签 105
小结 107
练习 108
第5章  Hibernate基础 109
5.1  Hibernate概述 111
5.1.1  ORM框架 111
5.1.2  Hibernate概述 112
5.2  Hibernate应用开发方式 115
5.3  Hibernate应用示例 115
5.3.1  配置Hibernate应用环境 116
5.3.2  创建持久化类及ORM映射文件 117
5.3.3  利用Configuration装载配置 119
5.3.4  利用SessionFactory创建Session 120
5.3.5  利用Session操作数据库 120
5.3.6  利用Transaction管理事务 121
5.3.7  利用Query进行HQL查询 123
5.3.8  利用Criteria进行条件查询 124
5.4  Hibernate配置文件详解 125
5.4.1  hibernate.cfg.xml 126
5.4.2  hibernate.properties 126
5.4.3  联合使用 127
5.5  Hibernate映射文件详解 128
5.5.1  映射文件结构 128
5.5.2  主键生成器 129
5.5.3  映射集合属性 130
5.6  持久化对象 131
5.6.1  持久化对象状态 131
5.6.2  改变持久化对象状态的方法 132
小结 136
练习 137
第6章  Hibernate核心技能 138
6.1  Hibernate关联关系 140
6.1.1  一对多关联关系 140
6.1.2  级联关系 151
6.1.3  一对一关联关系 154
6.1.4  多对多关联 156
6.2  Hibernate批量处理 162
6.2.1  批量插入 162
6.2.2  批量更新 163
6.3  Hibernate检索方式 165
6.4  HQL与QBC检索 166
6.4.1  Query与Criteria接口 168
6.4.2  使用别名 169
6.4.3  结果排序 170
6.4.4  分页查询 171
6.4.5  检索一条记录 173
6.4.6  设定查询条件 175
6.4.7  HQL中绑定参数 179
6.4.8  连接查询 181
6.4.9  投影、分组与统计 187
6.4.10 动态查询 192
6.4.11 子查询 196
6.4.12 查询方式比较 199
6.5  Hibernate事务管理 200
6.5.1  数据库事务 200
6.5.2  Hibernate中的事务 202
小结 203
练习 203
第7章  Spring基础 205
7.1  Spring概述 207
7.1.1  Spring起源背景 207
7.1.2  Spring体系结构 207
7.1.3  配置Spring环境 208
7.2  IoC容器 209
7.2.1  IoC概述 209
7.2.2  BeanFactory 210
7.2.3  ApplicationContext 211
7.2.4  Bean的生命周期 213
7.3  IoC容器中装配Bean 213
7.3.1  Spring配置文件 214
7.3.2  Bean基本配置 214
7.3.3  依赖注入的方式 215
7.3.4  注入值的类型 220
7.3.5  Bean间关系 224
7.3.6  Bean作用域 225
7.3.7  自动装配 227
小结 229
练习 230
第8章  Spring深入 231
8.1  Spring AOP 233
8.1.1  AOP思想和本质 233
8.1.2  AOP术语 233
8.1.3  Advice类型 235
8.1.4  基于XML配置的AOP 236
8.1.5  基于Annotation配置的AOP 246
8.2  Spring事务管理 250
8.2.1  Spring的事务策略 251
8.2.2  使用XML配置声明式事务 254
8.2.3  使用Annotation配置声明式事务 260
小结 262
练习 263
第9章  框架集成 264
9.1  Spring集成Struts2 266
9.1.1  整合原理 266
9.1.2  集成步骤 266
9.2  Spring集成Hibernate 270
9.2.1  配置SessionFactory 271
9.2.2  使用HibernateTemplate 273
9.2.3  使用HibernateDaoSupport 273
9.2.4  事务处理 278
9.2.5  OSIV模式 279
小结 280
练习 281
实践篇 283
实践1  Struts2基础 284
实践指导 284
实践1.G.1 284
实践1.G.2 291
实践1.G.3 292
知识拓展 296
1. 模型驱动的Action设计 296
拓展练习 298
练习1.E.1 298
实践2  Struts2深入 299
实践指导 299
实践2.G.1 299
实践2.G.2 305
知识拓展 309
1. 拦截器 309
2. 输入校验 315
拓展练习 323
练习2.E.1 323
练习2.E.2 323
实践3  Struts2标签库 324
实践指导 324
实践3.G.1 324
实践3.G.2 333
实践3.G.3 345
实践3.G.4 356
知识拓展 361
1.  使用Struts2框架实现文件上传 361
2. 在Struts2下集成Ext JS 371
拓展练习 376
练习3.E.1 376
实践4  实体类及映射文件 377
实践指导 377
实践4.G.1 377
实践4.G.2 378
实践4.G.3 380
知识拓展 384
1.  Hibernate的性能优化 384
2. 映射继承关系 393
拓展练习 401
练习4.E.1 401
实践5  业务类及DAO 402
实践指导 402
实践5.G.1 402
实践5.G.2 406
实践5.G.3 411
知识拓展 415
1. 在Hibernate框架下使用SQL语句 415
2. 设计类型安全的泛型Dao 416
3.  自定义类型 420
拓展练习 426
练习5.E.1 426
练习5.E.2 426
练习5.E.3 426
实践6  框架集成 427
实践指导 427
实践6.G.1 427
实践6.G.2 438
实践6.G.3 439
知识拓展 447
在Spring配置文件中引用属性文件 447
拓展练习 448
练习6.E.1 448
实践7  AOP应用 449
实践指导 449
实践7.G.1 449
实践7.G.2 451
知识拓展 462
1.  任务调度 462
拓展练习 468
练习7.E.1 468
实践8  项目完善 469
实践指导 469
实践8.G.1 469
实践8.G.2 473
实践8.G.3 475
知识拓展 481
1.  配置Hibernate二级缓存 481
2. 使用JavaMail收发邮件 485
拓展练习 491
练习8.E.1 491
附录A  常见Java EE框架 492
附录B  常用开源类库 494