第1篇 Struts 2篇 2
第1章 Struts 2入门 2
1.1 Struts 2发展历程 2
1.1.1 MVC概述 2
1.1.2 Struts 1概述 4
1.1.3 Struts 2概述及优势 6
1.2 配置Struts 2运行环境 7
1.3 Struts 2第一个例子 8
1.4 Struts 2各个部分的作用 11
1.5 配置Struts 2 14
1.5.1 配置web.xml 14
1.5.2 配置struts.properties 15
1.6 配置struts.xml 18
1.6.1 文件结构 18
1.6.2 Bean配置 19
1.6.3 常量配置 19
1.6.4 包配置 20
1.6.5 命名空间配置 21
1.6.6 包含配置 23
第2章 拦截器 25
2.1 拦截器简介 25
2.1.1 拦截器工作原理 25
2.1.2 拦截器意义 26
2.1.3 拦截器角色 28
2.2 拦截器配置 29
2.2.1 配置拦截器 29
2.2.2 使用拦截器 32
2.2.3 默认拦截器 34
2.3 自定义拦截器 35
2.3.1 实现拦截器类 35
2.3.2 使用自定义拦截器 37
2.3.3 文字过滤拦截器实例 40
2.4 深入拦截器 43
2.4.1 拦截器方法过滤 43
2.4.2 拦截器的拦截顺序 46
2.4.3 拦截结果监听器 47
2.4.4 覆盖拦截器中的参数 49
2.5 内建拦截器 50
2.5.1 内建拦截器简介 50
2.5.2 耗时拦截器实例 55
第3章 Action和类型转换 57
3.1 实现Action控制类 57
3.2 访问ActionContext 60
3.3 直接访问Servlet API 63
3.4 配置Action 65
3.5 动态方法调用 67
3.6 使用通配符 68
3.7 类型转换 68
3.7.1 使用Struts 2内建类型转换器 68
3.7.2 类型转换中的异常处理 72
第4章 Struts 2标签库 75
4.1 Struts 2标签库概述 75
4.1.1 使用标签的优势 75
4.1.2 Struts 2标签库分类 76
4.2 使用控制标签 77
4.2.1 if/elseif/else标签 77
4.2.2 iterator/append/merge/generator/subset/sort标签 78
4.3 使用数据标签 84
4.3.1 action标签 84
4.3.2 bean标签 87
4.3.3 debug标签 88
4.3.4 include标签 88
4.3.5 param标签 89
4.3.6 property标签 90
4.3.7 set标签 91
4.3.8 url标签 92
4.3.9 date标签 93
4.4 使用主题模板 94
4.5 使用表单UI标签 96
4.5.1 表单标签的通用属性 97
4.5.2 简单表单标签 97
4.5.3 checkboxlist标签 98
4.5.4 radio标签 100
4.5.5 combobox标签 101
4.5.6 select标签 101
4.5.7 doubleselect标签 102
4.5.8 optgroup标签 103
4.5.9 datetimepicker标签 104
4.5.10 token标签 105
4.5.11 updownselect标签 107
4.5.12 optiontransferselect标签 108
4.6 使用非表单UI标签 109
4.6.1 actionerror标签和actionmessage标签 110
4.6.2 component标签 111
4.6.3 tree标签和treenode标签 112
第5章 Struts 2输入校验 114
5.1 输入校验概述 114
5.1.1 进行输入校验的必要性 114
5.1.2 客户端校验与服务器端校验 115
5.1.3 类型转换与输入校验的关系 117
5.2 Struts 2手动完成输入校验 117
5.2.1 重写validate()方法 117
5.2.2 重写validateXxx()方法 119
5.2.3 Struts 2输入校验流程 122
5.3 使用Struts 2内置校验器 123
5.3.1 登录内置校验器实例 123
5.3.2 校验器配置风格 125
5.3.3 常用内置校验器 126
5.3.4 服务器端校验转换为客户端校验 136
5.4 自定义校验器 137
第6章 Struts 2扩展与高级技巧 140
6.1 Struts国际化 140
6.1.1 Struts 2实现国际化的机制 140
6.1.2 加载国际化资源文件的方式 144
6.1.3 带占位符的国际化消息 145
6.1.4 实现自由选择语言环境 147
6.2 应用中的异常处理 149
6.2.1 Struts 2异常处理机制 149
6.2.2 除法运算异常实例 150
6.3 OGNL 152
6.4 文件上传与下载 155
6.4.1 文件上传 155
6.4.2 文件下载 158
第7章 用户注册系统 160
7.1 系统概述 160
7.1.1 需求分析 160
7.1.2 系统用例图 161
7.1.3 系统设计 163
7.2 数据库设计 164
7.3 通用模块实现 165
7.3.1 实现通用数据库连接 165
7.3.2 配置文件 166
7.3.3 国际化 169
7.4 用户模块实现 170
7.4.1 用户注册 170
7.4.2 用户登录 175
7.4.3 查看所有用户 177
7.4.4 修改个人信息 180
7.5 管理员模块实现 184
7.5.1 管理员登录 184
7.5.2 删除管理员 186
第2篇 Hibernate篇 192
第8章 Hibernate简介 192
8.1 持久化概述 192
8.1.1 对象持久化 192
8.1.2 持久化层 193
8.2 ORM简介 195
8.2.1 ORM的概念 195
8.2.2 ORM面临的问题 197
8.2.3 ORM的优点 199
8.3 Hibernate框架 200
8.3.1 Hibernate的发展 200
8.3.2 Hibernate、EJB3和JPA 200
8.3.3 Hibernate的下载与安装 202
8.4 第一个Hibernate程序 203
8.4.1 创建数据库 204
8.4.2 创建项目 205
8.4.3 创建持久化类 205
8.4.4 Hibernate映射文件 207
8.4.5 Hibernate配置文件 208
8.4.6 Hibernate Session和MemberDAO类 209
8.4.7 运行第一个Hibernate程序 211
8.5 Hibernate基础配置 213
8.5.1 两种格式配置文件 213
8.5.2 配置属性 214
8.5.3 日志配置 218
8.6 Session接口 219
8.6.1 构建SessionFactory 219
8.6.2 Session的创建与关闭 222
8.6.3 Session的使用方法 222
第9章 Hibernate映射与检索 227
9.1 映射文件配置 227
9.1.1 〈hibernate-mapping〉 228
9.1.2 〈class〉元素 229
9.1.3 〈id〉元素 231
9.1.4 〈property〉元素 232
9.2 集合映射 234
9.2.1 Java集合类 234
9.2.2 无序Set映射 237
9.2.3 有序Set映射 239
9.2.4 映射List 241
9.2.5 映射Bag 242
9.2.6 映射Map 243
9.3 实体对象关联关系映射 244
9.3.1 映射单向多对一关联 244
9.3.2 基于外键单向一对一关联 248
9.3.3 基于主键单向一对一关联 249
9.3.4 映射双向一对一关联 250
9.3.5 映射双向一对多关联 252
9.3.6 映射单向多对多关联 254
9.3.7 映射双向多对多关联 256
9.4 Hibernate检索方式 257
9.4.1 HOL基础 258
9.4.2 动态查询和动态实例查询 262
9.4.3 分页查询 263
9.4.4 HOL嵌套子查询 264
9.4.5 多表查询 265
9.4.6 QBC入门 270
9.4.7 举例查询 274
第10章 Hibernate事务、缓存与性能优化 276
10.1 事务 276
10.1.1 事务的概念 277
10.1.2 ACID 278
10.1.3 在Hibernate中使用事务 279
10.2 并发控制 281
10.2.1 4个并发问题 282
10.2.2 事务隔离 284
10.2.3 在Hibernate中设置事务隔离级别 285
10.3 悲观锁和乐观锁 285
10.3.1 Hibernate锁定模式 286
10.3.2 悲观锁 286
10.3.3 乐观锁 287
10.4 Hibernate缓存 291
10.4.1 缓存的概念 291
10.4.2 Hibernate中的两级缓存结构 292
10.4.3 Hibernate中的第一级缓存 293
10.5 Hibernate中的第二级缓存 293
10.6 Hibernate查询缓存 297
10.7 Hibernate性能优化 299
10.7.1 优化系统设计 300
10.7.2 批量数据操作优化 300
10.8 Hibernate查询优化 302
第11章 BBS论坛开发 307
11.1 系统设计 307
11.1.1 需求分析 307
11.1.2 功能设计 308
11.2 数据库设计 309
11.3 系统实现 310
11.3.1 搭建Struts 2+Hibernate环境 310
11.3.2 建立业务实体对象 312
11.3.3 用户注册模块 314
11.3.4 论坛帖子模块 320
11.3.5 管理员模块 325
11.3.6 安全退出模块 329
第3篇 Spring篇 332
第12章 Spring概述 332
12.1 使用Spring的原因 332
12.2 Spring的下载和安装 333
12.3 Spring快速入门 334
12.3.1 Spring体系简介 334
13.3.2 Spring 2.5新特性 336
12.3.3 单态模式回顾 337
12.3.4 工厂模式回顾 338
12.3.5 单态模式与工厂模式的Spring实现 340
12.4 理解IoC 342
12.4.1 IoC实施策略 342
12.4.2 依赖注入 344
12.4.3 设值注入 345
12.4.4 构造注入 348
12.5 Spring产品线横向比较 349
12.5.1 Spring与EJB产品比较 349
12.5.2 与Spring相似的框架 351
12.5.3 其他Web框架 352
12.5.4 其他持久框架 354
第13章 装配Bean 357
13.1 Bean容器 357
13.1.1 Bean工厂 357
13.1.2 使用应用程序环境 361
13.2 Bean的生命周期 364
13.2.1 BeanFactory中Bean的生命周期 364
13.2.2 ApplicationContext中Bean的生命周期 369
13.3 基本Bean装配 370
13.3.1 使用XML进行装配 371
13.3.2 添加Bean 372
13.3.3 Bean命名 373
13.3.4 使用Setter Injection 373
13.3.5 使用Constructor Injection 375
13.4 自动装配 376
13.4.1 自动装配类型 377
13.4.2 自动装配控制 379
13.4.3 默认自动装配 381
13.4.4 使用自动装配的前提 381
13.5 使用Spring特殊Bean 382
13.5.1 后处理Bean 382
13.5.2 后处理Bean工厂 386
13.5.3 配置信息分离 386
13.5.4 解析文本信息 388
13.5.5 事件处理 389
第14章 面向切面编程 392
14.1 AOP简介 392
14.1.1 AOP术语 392
14.1.2 Spring AOP的实现者 394
14.1.3 Spring AOP实现 395
14.2 创建advice 396
14.2.1 Before Advice 397
14.2.2 After Advice 400
14.2.3 Around Advice 401
14.2.4 Throws Advice 402
14.2.5 Introduction Advice 403
14.3 定义Pointcut 404
14.3.1 定义一个新Pointcut的方法 404
14.3.2 理解Advisor 405
14.3.3 使用Spring静态Pointcut 406
14.3.4 使用Spring动态Pointcut 410
14.4 创建Introduction 412
14.4.1 实现IntroductionInterceptor 412
14.4.2 创建IntroductionAdvisor 414
14.5 使用ProxyFactoryBean 415
14.6 自动代理 416
14.6.1 实现类 416
14.6.2 BeanNameAutoProxyCreator 417
14.6.3 DefaultAdvisorAutoProxyCreator 418
第15章 Spring Web框架 420
15.1 Spring MVC框架 420
15.1.1 Spring MVC概述 420
15.1.2 Spring Web入门实例 423
15.1.3 配置DispatcherServlet 428
15.1.4 处理器映射与拦截器 430
15.1.5 视图解析器 433
15.1.6 异常解析器 435
15.1.7 控制器简介 436
15.1.8 命令控制器 437
15.1.9 表单控制器与验证器 439
15.1.10 多动作控制器 444
15.1.11 向导控制器 447
15.1.12 参数映射控制器和文件名映射控制器 452
15.2 中文乱码问题 453
15.3 国际化信息 454
15.4 文件上传 457
15.5 使用Tiles布局 459
15.5.1 定义模板 460
15.5.2 配置Tiles 461
第16章 相册系统 464
16.1 系统概述 464
16.1.1 需求分析 464
16.1.2 系统用例图 465
16.1.3 系统设计 466
16.1.4 数据库设计 466
16.2 系统配置 467
16.2.1 整合原理 468
16.2.2 整合方式 468
16.2.3 整合流程 471
16.2.4 applicationContext.xml 472
16.2.5 struts.xml 474
16.3 系统模块开发 475
16.3.1 用户注册 475
16.3.2 用户登录 479
16.3.3 创建相册 481
16.3.4 上传图片 484
16.3.5 查看相册 488
16.3.6 管理相册 491
第4篇 综合实例篇 496
第17章 通讯录 496
17.1 系统概述 496
17.1.1 需求分析 496
17.1.2 系统用例图 497
17.1.3 系统设计 498
17.1.4 数据库设计 498
17.2 系统整合 499
17.2.1 整合流程 499
17.2.2 配置数据库连接 502
17.2.3 配置SessionFactory 502
17.2.4 在Spring中配置DAO 503
17.3 联系组模块 504
17.3.1 添加联系组 504
17.3.2 删除联系组 508
17.3.3 查看分组 512
17.4 联系人模块 515
17.4.1 添加联系人 515
17.4.2 修改联系人 516
17.4.3 全部联系人 518
17.4.4 查询联系人 522
第18章 列车查询系统 524
18.1 系统概述 524
18.1.1 需求分析 524
18.1.2 系统用例图 525
18.1.3 系统设计 526
18.2 数据库设计 527
18.3 框架整合 529
18.3.1 整合过程 529
18.3.2 管理员登录 535
18.3.3 整合原理 538
18.3.4 系统结构 540
18.3.5 系统文件描述 540
18.4 Hibernate持久层 541
18.4.1 连接数据库 541
18.4.2 设计持久化对象 543
18.4.3 创建持久化类 544
18.4.4 映射持久化类 546
18.5 实现DAO层 548
18.5.1 实现DAO组件 549
18.5.2 部署DAO组件 551
18.6 按车次查询列车模块 552
18.6.1 设计按车次查询列车页面 552
18.6.2 创建Action 553
18.6.3 配置Action 554
18.6.4 JSP页面输出 554
第19章 网上书店项目 558
19.1 系统设计 558
19.1.1 需求分析 558
19.1.2 功能设计 559
19.2 数据库设计 560
19.3 系统实现 563
19.3.1 搭建Struts 2+Spring+Hibernate环境 563
19.3.2 建立业务实体对象 566
19.3.3 用户注册模块 568
19.3.4 图书显示模块 573
19.3.5 购物车模块 577
19.3.6 后台管理模块 585