1.1 Struts项目的组成 1
第1章 Struts简介 1
1.2 获得Struts 2
1.2.1 Struts发行包的分类及简介 3
1.2.2 Struts的运行环境 3
1.3 运行Struts的样例程序 5
1.3.1 安装JDK 5
1.3.2 安装Tomcat 6
1.3.3 部署Struts的样例程序 7
1.4 小结 10
2.1 实例简介 12
第2章 Struts入门 12
2.2 准备工作 13
2.2.1 配置Ant 13
2.2.2 数据库的安装 13
2.3 使用Struts初始化一个Web应用项目 14
2.3.1 构建基础目录结构 14
2.3.2 修改Ant的构建文件 14
2.4 编写第一个Action 17
2.5 编写第一个页面 19
2.5.1 设置文件的编码格式 19
2.5.2 对国际化的支持 20
2.5.3 编写JSP页面 22
2.6.1 配置web.xml文件 23
2.6 配置Action和forward 23
2.6.2 配置Struts的配置文件 25
2.7 编译、部署和测试Struts应用程序 26
2.8 编写第一个ActionForm 28
2.8.1 定义一个ActionForm类 29
2.8.2 定义ActionForm的属性 29
2.8.3 覆盖reset()方法 30
2.8.4 实现validate()方法 31
2.9 编写第一个输入页面 32
2.10 在Action中增加对取消按钮的处理 39
2.11.1 建立数据库的辅助工具类 41
2.11 在Struts中更新数据库 41
2.11.2 初始化数据库表 44
2.11.3 修改Action的execute()方法 45
2.12 Struts中的异常处理 46
2.12.1 定义异常信息 47
2.12.2 定义对异常的处理 47
2.12.3 测试 48
2.13 使用Struts标记来显示对象 49
2.13.1 定义对象名称 49
2.13.2 修改注册成功页面 50
2.14.1 实现用户对象 52
2.14 使用Logic标记来显示用户 52
2.14.2 编写后台Action以获得所有的用户信息 53
2.14.3 配置Action 54
2.14.4 实现用户列表页面 55
2.15 小结 56
第3章 Struts的框架结构 57
3.1 MVC简介 57
3.2 JSP开发模式 58
3.3 Struts的结构 59
3.3.1 Struts概览 60
3.3.2 Struts的组成 60
3.3.3 HTTP请求处理的顺序 63
3.4 基于Struts的开发方法 66
3.5 小结 67
第4章 使用Eclipse和MyEclipse开发Struts应用程序 68
4.1 Eclipse简介 68
4.2 MyEclipse简介 69
4.3 使用MyEclipse开发Struts应用实例 70
4.3.1 创建一个新的项目 70
4.3.2 增加Struts组件到项目中 72
4.3.3 增加类库到项目构建的路径中 73
4.3.4 Struts配置文件编辑器 75
4.3.5 开发一个简单的Struts应用程序 76
4.4 小结 85
第5章 用户界面开发基础 86
5.1 用户界面开发概述 86
5.2 Struts标记库 88
5.2.1 Bean标记库 88
5.2.2 HTML标记库 96
5.2.3 标记库的配置和使用方法 106
5.3 Java标准标记库 106
5.3.2 JSTL的组成 107
5.3.3 JSTL的安装 107
5.3.1 JSTL简介 107
5.3.4 JSTL的使用 108
5.4 表达式语言 108
5.4.1 表达式语言简介 108
5.4.2 变量的作用域 109
5.4.3 隐式对象 110
5.4.4 存取器 111
5.4.5 运算符 112
5.5 显示柱状图 113
5.5.1 柱状图显示实例的功能简介 113
5.5.2 柱状图的实现原理 114
5.5.3 实现柱状图的显示功能 114
5.6.1 实例功能简介 121
5.6 实现表格隔行使用相同样式 121
5.6.2 改变表格行样式的方法 122
5.6.3 动态使用表格行样式 122
5.7 数据的分页显示 124
5.7.1 数据分页显示的功能 125
5.7.2 数据分页的实现方法 125
5.7.3 数据分页功能的具体实现 126
5.8 对用户输入文本的处理 133
5.8.2 文本输出的方式 134
5.8.1 文本处理的原则 134
5.8.3 自定义编码方法 136
5.9 小结 136
第6章 各种各样的ActionForm 137
6.1 ActionForm简介 137
6.2 ActionForm的生命周期 138
6.3 在ActionForm中使用列表属性 139
6.3.1 功能简介 140
6.3.2 实现方法 140
6.3.3 在ActionForm中使用列表属性的实例 140
6.4.2 实现方法 147
6.4.3 在ActionForm中使用Map属性的实例 147
6.4 在ActionForm中使用Map属性 147
6.4.1 功能简介 147
6.5 使用动态ActionForm 153
6.5.1 功能简介 153
6.5.2 实现方法 153
6.5.3 使用动态ActionForm的实例 155
6.6 使用Lazy动态ActionForm 159
6.6.1 功能简介 159
6.6.2 实现方法 159
6.6.3 使用Lazy ActionForm的实例 159
6.7 自定义赋值转换方法 161
6.8 小结 162
7.2 Action的开发步骤 163
第7章 使用多样性的Action 163
7.1 Action简介 163
7.3 各种各样的Action 165
7.3.1 ForwardAction 166
7.3.2 IncludeAction 167
7.3.3 DispatchAction 168
7.3.4 DownloadAction 174
7.3.5 SwitchAction 174
7.3.6 LocaleAction 174
7.4 解决用户重复提交的问题 174
7.4.1 功能简介 175
7.4.2 Struts解决用户重复提交的实现原理 175
7.4.3 在Struts中避免重复响应用户的请求 176
7.4.4 使用JavaScript解决用户重复提交的问题 181
7.5 在Struts中输出XML文件 183
7.5.1 功能简介 183
7.5.2 Struts输出XML文件的原理和方法 183
7.5.3 Struts中输出XML文件的实例 184
7.6 文件上传和下载功能的实现 186
7.6.1 功能简介 186
7.6.2 实现方法 186
7.6.3 文件上传功能的实现 187
7.6.4 文件下载功能的实现 193
7.7 小结 195
第8章 Validator的使用 196
8.1 Validator框架简介 196
8.1.1 Validator的作用 196
8.1.2 Validator的优点 197
8.1.3 Struts与Validator的关系 197
8.1.4 Validator的组成 197
8.2 Validator的使用 202
8.2.1 在Struts中使用Validator 202
8.2.2 在独立的应用中使用Validator 209
8.3 日期的验证 216
8.4 验证两个输入域是否相等 218
8.5 使用正则表达式进行验证 219
8.6 小结 220
第9章 Struts的扩展与高级技巧 221
9.1 使用Struts的PlugIn进行Web应用的扩展 221
9.2 扩展Struts的RequestProcessor 225
9.2.1 RequestProcessor简介 225
9.2.2 RequestProcessor的扩展 227
9.3 ActionServlet的扩展 228
9.4 Struts的国际化 229
9.4.1 检查浏览器的语言设置 229
9.4.2 在Struts中使用多语言的信息 230
9.5.2 对于Action的权限校验 233
9.5.1 准备工作 233
9.5 基于Struts框架的系统安全 233
9.5.3 在页面中进行权限校验 235
9.5.4 使用Filter进行权限的验证 236
9.6 应用中的异常处理 236
9.6.1 异常处理的原则 236
9.6.2 业务异常的设计 237
9.6.3 在Servlet容器中处理异常 238
9.6.4 Struts的异常处理机制 241
9.6.5 利用扩展Action的方法实现对异常的处理 243
9.7 小结 245
10.2 持久层技术 246
第10章 Hibernate简介 246
10.1 持久化技术 246
10.3 持久层技术的实现 249
10.4 ORM概述 251
10.5 Hibernate简介 251
10.6 获得Hibernate 252
10.6.1 Hibernate Core 252
10.6.2 Hibernate Annotations 253
10.6.5 NHibernate 254
10.7 Hibernate Core软件包的组成 254
10.6.6 JBoss Seam 254
10.6.4 Hibernate Tools 254
10.6.3 Hibernate EntityManager 254
10.7.1 运行样例程序和测试程序 255
10.7.2 Hibernate的依赖组件 255
10.8 小结 257
第11章 Hibernate入门 258
11.1 项目的体系结构 258
11.2 项目开发概述 260
11.2.1 功能介绍 260
11.2.2 应用的主要技术 262
11.2.3 开发步骤和方法 263
11.3.1 创建一个新项目 264
11.3 开发博客管理系统 264
11.3.2 分析和建模 268
11.3.3 实现域模型 271
11.3.4 编写数据库脚本 283
11.3.5 定义映射文件 285
11.3.6 编写Hibernate的配置文件 288
11.3.7 Hibernate工具类的实现 295
11.3.8 Hibernate Filter的实现 306
11.3.9 定义和实现系统的异常 311
11.3.10 定义和实现DAO 314
11.3.11 完成用户注册和登录功能 343
11.3.12 博客管理功能的实现 358
11.3.13 博客主页的实现 374
11.4 小结 383
第12章 Hibernate的体系结构 384
12.1 Hibernate的体系结构 384
12.1.1 Hibernate在应用程序中的位置 384
12.1.2 Hibernate的体系结构 385
12.2 Hibernate实体对象的生命周期 387
12.2.1 Transient(瞬态) 387
12.2.2 Persistent(持久态) 388
12.2.3 Detached(游离态) 389
12.2.4 实体对象的状态转换 390
12.3.1 Configuration类 397
12.3 Hibernate API简介 397
12.3.2 SessionFactory接口 398
12.3.3 Session接口 398
12.3.4 Transaction接口 403
12.3.5 Query接口 404
12.3.6 Criteria接口 414
12.4 小结 418
第13章 Hibernate的映射技巧 419
13.1 映射文件的配置 419
13.1.1 <hibernate-mapping>的说明 419
13.1.2 <class>元素 421
13.1.3 <id>元素 424
13.1.4 <property>元素 426
13.2 集合类的映射 428
13.2.1 Java的集合类 428
13.2.2 集合类的映射 432
13.3 实体对象关联关系的映射 436
13.3.1 一对一关联关系的映射 437
13.3.2 一对多关联关系的映射 440
13.3.3 多对一关联关系的映射 441
13.3.4 多对多关联关系的映射 442
13.4.1 每个具体类一张表 444
13.4 实体对象继承的映射 444
13.4.2 每个类分层结构一张表 447
13.4.3 每个子类一张表 448
13.4.4 对象继承的映射方法总结 450
13.5 映射中的inverse和cascade 450
13.5.1 inverse属性 451
13.5.2 cascade属性 454
13.5.3 inverse与cascade的区别 455
13.6 小结 455
14.1 Hibernate的事务处理 456
14.1.1 事务的基本概念 456
第14章 Hibernate事务处理、缓存以及性能优化 456
14.1.2 数据库的隔离级别 457
14.1.3 Hibernate中的事务处理 458
14.1.4 并发控制 459
14.2 Hibernate缓存 467
14.2.1 什么是缓存 467
14.2.2 一级缓存 468
14.2.3 二级缓存 468
14.2.4 Hibernate查询方法与缓存的关系 477
14.3 Hibernate的性能优化 478
14.3.1 设计阶段的考虑问题 478
14.3.2 批量插入、更新和删除 479
14.3.3 提升数据库查询的性能 480
14.4 小结 484
第15章 Spring简介 485
15.1 Spring简介 485
15.2 控制反转(Inversion of Control) 487
15.3 依赖注入 488
15.4 面向切面的编程 489
15.5 Spring框架简介 491
15.6 获得Spring 492
15.7 小结 492
16.1 IoC容器 493
第16章 Spring的核心技术 493
16.1.1 IoC容器和Bean 494
16.1.2 Bean的基本配置 499
16.1.3 Bean的其他特性 521
16.2 资源 526
16.2.1 Resource接口 527
16.2.2 Resource的实现 527
16.2.3 ResourceLoader接口 528
16.2.4 资源小结 529
16.3 数据绑定功能 529
16.3.1 BeanWrapper类 529
16.3.2 PropertyEditor 533
16.3.3 实现自定义的PropertyEditor 534
16.4. 面向切面的编程 538
16.4.1 AOP的思想和本质 538
16.3.4 数据绑定功能小结 538
16.4.2 AOP的基本概念 539
16.4.3 Spring AOP的功能 540
16.4.4 基于配置的AOP 541
16.4.5 基于@AspectJ的AOP 548
16.5 小结 555
17.1 事务管理 556
17.1.1 事务管理的框架 556
第17章 基于Struts的数据访问 556
17.1.2 声明式事务管理 558
17.1.3 注解式事务管理 560
17.2 使用JDBC访问数据库 561
17.2.1 Spring JDBC简介 562
17.2.2 Spring JDBC核心包的使用 562
17.2.3 Spring JDBC数据源包 569
17.2.4 Spring JDBC对象包 570
17.2.5 Spring JDBC支持包 570
17.3 使用Hibernate访问数据库 572
17.3.1 Hibernate数据库访问流程 572
17.3.2 利用Spring的IoC容器创建SessionFactory 573
17.3.3 DAO的开发 575
17.3.4 Hibernate的事务管理 578
17.3.5 OpenSessionInView模式 579
17.4 小结 580
第18章 Spring MVC入门 581
18.1 简介 581
18.2 准备工作 581
18.2.1 初始化项目 581
18.2.2 编写Ant构建文件 582
18.3 使用Spring的MVC 589
18.3.1 Spring MVC简介 589
18.3.2 配置DispatcherServlet 590
18.3.3 创建自己的控制器 591
18.3.4 页面视图的实现 592
18.3.5 配置控制器的映射 593
18.3.6 增加业务逻辑 596
18.3.7 增加前台提交数据的处理功能 603
18.3.8 数据保存功能的实现 618
18.4 小结 625
第19章 Spring的Web集成 626
19.1 视图集成技术 626
19.1.1 视图和视图解析器 626
19.1.2 集成前的准备工作 627
19.1.3 JSP和JSTL的使用 629
19.1.4 XSLT的使用 630
19.1.5 PDF的输出 632
19.1.6 Excel文件的输出 634
19.1.7 视图集成技术小结 636
19.2 Web框架集成技术 636
19.2.1 通用配置 636
19.2.2 Struts集成 637
19.3 小结 639
第20章 使用Struts+Spring+Hibernate架构开发订货系统 640
20.1.1 表示层 641
20.1 Web应用的体系结构 641
20.1.2 持久层 642
20.1.3 业务层 642
20.1.4 域模型层 643
20.2 项目初始化 643
20.3 开发订货系统 644
20.3.1 域模型层的配置 645
20.3.2 持久层的配置 647
20.3.3 业务层的开发和配置 648
20.3.4 编写服务Locator类 659
20.3.5 UI层(表示层)实现 659
20.4 小结 676