第一篇 S2SH技术框架简介和开发环境搭建第1章 初识S2SH 3
1.1 Struts 2框架简介 3
1.1.1 Struts 2体系结构 3
1.1.2 Struts 2与Struts 1 4
1.1.3 Struts 2与WebWork 4
1.1.4 Struts 2下载 5
1.2 Spring框架简介 6
1.2.1 IOC和AOP 6
1.2.2 IOC容器 7
1.2.3 Spring下载 7
1.3 Hibernate框架简介 8
1.3.1 Hibernate的优点 8
1.3.2 Hibernate的缺点 9
1.3.3 Hibernate下载 9
1.4 小结 10
第2章 进入S2SH框架开发环境 11
2.1 如何搭建开发环境 11
2.1.1 JDK的安装 11
2.1.2 Tomcat的安装 14
2.1.3 Eclipse的安装 20
2.1.4 安装数据库MySQL 21
2.2 常用插件的安装方法 26
2.2.1 MyEclipse的安装 27
2.2.2 在MyEclipse中配置Tomcat 7服务器 31
2.3 在开发环境中实现一个简单的Web应用 35
2.4 小结 39
第二篇 为走向S2SH框架铺路 43
第3章 Servlet技术 43
3.1 Servlet基础 43
3.1.1 创建Servlet 43
3.1.2 Servlet生命周期 46
3.1.3 Servlet部署与配置 48
3.2 Servlet使用 49
3.3 小结 51
第4章 JSP技术 52
4.1 什么是JSP 52
4.1.1 JSP简介 52
4.1.2 JSP基本原理 52
4.2 JSP指令与脚本元素 55
4.2.1 page指令 56
4.2.2 include指令 59
4.2.3 taglib指令 60
4.2.4 JSP脚本元素 61
4.3 JSP内置对象 62
4.3.1 输出对象(out) 62
4.3.2 请求对象(request) 63
4.3.3 响应对象(response) 64
4.3.4 会话对象(session) 65
4.3.5 其他内置对象 68
4.4 EL和JSTL 68
4.4.1 JSTL标签库 68
4.4.2 EL隐式对象 72
4.5 使用Eclipse编写JSP页面实例 76
4.5.1 用户注册 76
4.5.2 用户登录页面 78
4.6 如何进行JavaBean开发 79
4.7 小结 80
第5章 使用JSP+Servlet+JavaBean(MVC)进行数据库开发 81
5.1 使用JDBC技术访问和操作数据库 81
5.1.1 加载驱动程序 81
5.1.2 使用Connection对象创建数据库连接 82
5.1.3 创建执行SQL语句 83
5.1.4 JDBC技术的缺点 83
5.2 连接池技术 84
5.2.1 连接池的工作原理 84
5.2.2 实例:如何使用JNDI技术获得数据源对象 85
5.3 使用MVC设计模式实现论坛系统中的发帖功能 86
5.3.1 MVC设计模式简介 87
5.3.2 论坛发帖功能展现 87
5.3.3 连接操作数据库 88
5.3.4 创建视图 89
5.3.5 创建控制器 90
5.3.6 创建模型 91
5.3.7 部署运行程序 92
5.4 小结 93
第三篇 Struts 2框架 97
第6章 Struts 2框架 97
6.1 Struts 2的起源 97
6.1.1 WebWork简介 97
6.1.2 Struts 2的起源 98
6.1.3 Struts 1与Struts 2的区别 98
6.1.4 WebWork与Struts 2的区别 100
6.2 Struts 2体系结构 100
6.2.1 Struts 2框架结构 100
6.2.2 Struts 2的配置文件 101
6.2.3 Struts 2的标签库 102
6.3 使用Struts 2实现一个简单的“Hello World”程序 103
6.3.1 创建Web应用程序 103
6.3.2 为项目添加Struts 2支持 104
6.3.3 添加Action 106
6.4 Struts 2的基本流程 107
6.4.1 核心控制器:FilterDispatcher 107
6.4.2 业务控制器 108
6.4.3 Struts 2的模型组件 108
6.4.4 Struts 2的视图组件 108
6.4.5 Struts 2的运行流程 108
6.5 Struts 2 的基本配置 110
6.5.1 配置web.xml 110
6.5.2 配置struts.xml 111
6.5.3 配置struts.properties 113
6.5.4 struts.xml文件结构 116
6.6 小结 118
第7章 深入Struts 2 119
7.1 深入Struts 2的配置元素 119
7.1.1 Bean配置 119
7.1.2 常量配置 120
7.1.3 包配置 121
7.1.4 命名空间的配置 122
7.1.5 拦截器配置 123
7.2 Struts 2的Action详解 124
7.2.1 编写Action的实现类 124
7.2.2 实现Action接口以规范Action类开发 125
7.2.3 通过继承ActionSupport类来简化Action开发 126
7.2.4 使用ActionContext类访问Servlet API 128
7.2.5 实现xxxAware接口直接访问Servlet API 131
7.2.6 借助ServletActionContext类直接访问Servlet API 132
7.2.7 如何配置Action 133
7.2.8 使用动态方法调用处理用户登录和注册逻辑 134
7.2.9 指定Action元素的method属性处理用户登录和注册逻辑 136
7.2.10 使用通配符处理用户登录和注册逻辑 137
7.2.11 默认的Action 139
7.3 指定Action的处理结果 139
7.3.1 改进处理Action的处理结果 140
7.3.2 配置结果 140
7.3.3 Struts 2支持的处理结果类型 141
7.3.4 通过配置动态指定结果 141
7.3.5 通过请求参数指定结果 142
7.4 认识模型驱动 144
7.4.1 模型的作用 144
7.4.2 使用模型驱动实现登录 145
7.5 Struts 2的异常处理 146
7.5.1 登录应用中配置拦截器实现异常处理 147
7.5.2 登录应用中进行声明式异常捕捉 147
7.6 小结 149
第8章 Struts 2类型转换 150
8.1 类型转换 150
8.1.1 什么是类型转换 150
8.1.2 为什么要进行类型转换 150
8.1.3 如何进行类型转换 151
8.1.4 表示层的数据处理 151
8.2 使用类型转换器 156
8.2.1 Struts 2内建的类型转换器 156
8.2.2 Struts 2自定义类型转换器以及如何注册转换器 159
8.2.3 实现集合类型转换器 164
8.3 Struts 2对Collection和Map的支持 167
8.4 类型转换中的错误处理 169
8.4.1 类型转换的错误处理流程 169
8.4.2 类型转换错误的处理 169
8.5 小结 172
第9章 Struts 2的拦截器 173
9.1 理解拦截器 173
9.1.1 拦截器的实现原理 173
9.1.2 实现一个简单的拦截器 174
9.2 拦截器配置初步 179
9.2.1 配置拦截器 179
9.2.2 使用拦截器 182
9.2.3 如何使用拦截器的方法过滤特性 182
9.3 Struts 2内建的拦截器 184
9.4 使用拦截器进行权限控制 186
9.4.1 实现权限控制拦截器 186
9.4.2 配置权限控制拦截器 189
9.5 小结 191
第10章 Struts 2的输入校验 192
10.1 输入校验概述 192
10.1.1 客户端校验 193
10.1.2 服务器端校验 194
10.2 在Struts 2中手工实现输入校验 197
10.2.1 重写validate方法校验单个处理逻辑 197
10.2.2 重写validateXxx方法校验多个处理逻辑 200
10.3 基于Struts 2验证框架的输入校验 205
10.3.1 编辑校验规则文件 207
10.3.2 实现错误提示信息的国际化 210
10.3.3 使用客户端校验 213
10.4 小结 214
第11章 Struts 2的国际化 215
11.1 国际化简介 215
11.1.1 Java国际化的思路 216
11.1.2 Java支持的语言和国家 217
11.1.3 使用资源文件实现程序的国际化 219
11.1.4 使用占位符输出包含动态内容的消息 222
11.2 Struts 2国际化初步 223
11.2.1 在Struts 2中加载全局资源文件 223
11.2.2 Struts 2访问国际化消息 224
11.2.3 输出带占位符的国际化消息 227
11.3 Struts 2加载资源文件的其他方式 230
11.3.1 指定包范围资源文件 230
11.3.2 指定Action范围资源文件 231
11.4 使用Struts 2实现用户自行选择语言 234
11.5 小结 238
第12章 Struts 2的标签库 239
12.1 Struts 2标签概述 239
12.2 Struts 2标签入门 239
12.2.1 使用Struts 2标签第一步:准备工作 240
12.2.2 使用Struts 2的OGNL增强数据访问功能 240
12.2.3 使用OGNL中的集合操作 240
12.2.4 使用OGNL中的Lambda(λ)表达式 241
12.3 控制标签 241
12.3.1 使用if/elseif/else标签 242
12.3.2 使用iterator标签 242
12.3.3 使用append标签 244
12.3.4 使用generator标签 245
12.3.5 使用merge标签 246
12.3.6 使用subset标签 248
12.3.7 使用sort标签 249
12.4 数据标签 251
12.4.1 使用action标签 252
12.4.2 使用bean标签 253
12.4.3 使用date标签 255
12.4.4 使用include标签 256
12.4.5 使用param标签 257
12.4.6 使用push标签 257
12.4.7 使用set标签 258
12.4.8 使用url标签 259
12.4.9 使用property标签 261
12.5 表单标签 261
12.5.1 表单标签的通用属性 261
12.5.2 表单标签的name和value属性 262
12.5.3 使用复选框checkbox标签 262
12.5.4 使用级联列表框doubleselect标签 264
12.5.5 使用添加CSS和JavaScript的head标签 266
12.5.6 使用可生成交互的两个列表框的optiontransferselect标签 266
12.5.7 使用列表框select标签 267
12.5.8 使用单选框radio标签 268
12.5.9 使用下拉列表选项组optgroup标签 269
12.5.10 使用防止多次提交表单的token标签 270
12.5.11 使用高级列表框updownselect标签 271
12.6 非表单标签 272
12.6.1 使用actionerror和actionmessage标签显示动作错误和动作消息 273
12.6.2 使用tree和treenode标签 274
12.7 小结 275
第13章 在Struts 2中使用Ajax 276
13.1 Ajax概述 276
13.1.1 Ajax技术的产生与发展 277
13.1.2 Ajax的核心技术 278
13.2 JavaScript框架 280
13.2.1 jQuery 281
13.2.2 DWR 284
13.3 Struts 2提供的Ajax支持 285
13.3.1 下载、添加DWR框架 285
13.3.2 配置DWR框架 286
13.4 谷歌关键字搜索建议 293
13.4.1 实现dao 294
13.4.2 实现Action 295
13.4.3 实现视图页面 297
13.4.4 项目配置文件 298
13.5 小结 301
第14章 使用Struts 2框架实现注册和登录 302
14.1 实现dao层 302
14.1.1 实现DbConnection类 305
14.1.2 实现DbService 306
14.2 实现Biz层 308
14.3 实现Action 310
14.3.1 实现LoginAction 311
14.3.2 实现RegisterAction 312
14.3.3 在struts.xml中添加Action映射 317
14.4 实现页面 318
14.4.1 登录页面 318
14.4.2 注册页面 319
14.5 输入校验 324
14.5.1 登录页面校验 324
14.5.2 注册页面校验 325
14.6 小结 327
第四篇 开发Hibernate框架 331
第15章 Hibernate初步 331
15.1 Hibernate概述 331
15.1.1 为什么要使用Hibernate 331
15.1.2 什么是持久化 331
15.1.3 对象-关系映射(ORM) 332
15.1.4 Hibernate体系结构 332
15.1.5 Hibernate执行流程 333
15.2 使用Hibernate实现用户添加 334
15.3 Hibernate的数据库操作 339
15.3.1 使用Hibernate加载数据 339
15.3.2 使用Hibernate删除数据 340
15.3.3 使用Hibernate修改数据 341
15.4 使用MyEclipse工具简化数据库开发 342
15.4.1 给项目添加Hibernate支持 342
15.4.2 自动生成实体类和映射文件 347
15.4.3 编写BaseHibernateDAO类 352
15.5 小结 356
第16章 Hibernate的关联映射 357
16.1 多对一映射实例 357
16.1.1 多对一映射配置 357
16.1.2 测试多对一映射 360
16.2 一对多映射实例 361
16.2.1 一对多映射配置 361
16.2.2 测试一对多映射 362
16.3 双向映射实例 363
16.3.1 添加数据 363
16.3.2 删除数据 369
16.3.3 更改数据 372
16.4 多对多映射实例 373
16.4.1 多对多映射配置 373
16.4.2 添加数据 375
16.4.3 删除数据 379
16.5 小结 380
第17章 Hibernate查询和连接池技术 381
17.1 Hibernate查询 381
17.2 HQL查询 381
17.3 Criteria查询 389
17.4 DetachedCriteria查询 394
17.5 连接池技术 395
17.5.1 配置数据源名称 397
17.5.2 在Hibernate中使用数据库连接池 398
17.6 小结 399
第18章 Struts 2与Hibernate的整合 400
18.1 环境搭建 400
18.2 登录功能流程 401
18.3 实现DAO层 402
18.4 实现Biz层 403
18.5 实现Action 403
18.6 编写配置文件 404
18.6.1 配置struts.xml 404
18.6.2 配置web.xml 405
18.7 创建登录页面 406
18.8 小结 406
第五篇 Spring框架开发 409
第19章 初识Spring 409
19.1 Spring简介 409
19.1.1 Spring的背景 409
19.1.2 Spring框架(Spring Framework) 410
19.2 实现一个简单的Spring实例 410
19.2.1 搭建Spring开发环境 410
19.2.2 编写HelloWorld类 412
19.2.3 配置applicationContext.xml文件 412
19.2.4 编写测试类 412
19.3 小结 413
第20章 依赖注入/控制反转 414
20.1 概述 414
20.2 如何使用Spring的依赖注入 414
20.2.1 编写DAO层 414
20.2.2 编写Biz层 415
20.2.3 配置applicationContext.xml文件 415
20.2.4 编写测试类 416
20.3 小结 417
第21章 面向方面编程(Spring AOP) 418
21.1 Spring AOP简介 418
21.1.1 为什么使用AOP 418
21.1.2 AOP的重要概念 418
21.2 基于代理类ProxyFactoryBean的AOP实现 419
21.2.1 编写数据访问层 419
21.2.2 编写业务逻辑层 420
21.2.3 编写方面代码 420
21.2.4 将“业务逻辑代码”和“方面代码”组装进代理类 422
21.2.5 编写测试类 423
21.3 Spring AOP通知(Advice) 424
21.3.1 后置通知 424
21.3.2 异常通知 425
21.3.3 环绕通知 426
21.4 采用AOP配置方式的AOP实现 428
21.5 小结 431
第22章 Struts 2与Spring、Hibernate的集成(S2SH) 432
22.1 Spring整合Hibernate 432
22.1.1 给项目添加Spring和Hibernate框架 432
22.1.2 使用MyEclipse向导生成实体类和映射文件 437
22.1.3 使用HibernateTemplate模板开发DAO层 437
22.1.4 开发Biz层 438
22.1.5 配置ApplicationContext.xml文件 439
22.1.6 编写测试类 439
22.2 Spring整合Struts 2 440
22.2.1 给项目添加Struts 2框架 440
22.2.2 创建Action 442
22.2.3 Spring整合Struts 2的步骤 443
22.3 小结 444
第23章 Spring事务管理 445
23.1 Spring事务管理方式 445
23.2 Spring 2.5声明式事务 445
23.2.1 生成实体类和映射文件 446
23.2.2 实现DAO层 446
23.2.3 实现Biz层 447
23.2.4 创建Action 448
23.2.5 Spring中配置DAO、Biz和AccountManager 449
23.2.6 struts.xml中配置AccountManager类 450
23.2.7 配置声明式事务 450
23.2.8 编写转账页面 451
23.2.9 声明式事务测试 452
23.3 基于Annotation方式的事务管理配置 453
23.4 小结 455
第六篇 S2SH综合实例 459
第24章 在线商品拍卖网 459
24.1 系统概述及需求分析 459
24.2 系统分析 460
24.3 数据库设计 460
24.4 系统环境搭建 462
24.4.1 添加Struts 2支持 462
24.4.2 添加Spring支持 464
24.4.3 添加Hibernate支持 465
24.4.4 配置事务管理 470
24.4.5 让应用程序启动时自动装载Spring容器 471
24.5 系统目录结构 472
24.6 生成实体类和映射文件 473
24.7 系统功能实现 479
24.7.1 系统首页面 479
24.7.2 用户注册功能 486
24.7.3 登录功能 489
24.7.4 注销功能 493
24.7.5 修改密码 494
24.7.6 添加商品 496
24.7.7 查看我的在拍商品 500
24.7.8 出价功能 503
24.7.9 成交功能 510
24.8 小结 513
第25章 聚群网-交友社区 514
25.1 系统概述 514
25.2 系统分析 514
25.3 设计系统数据库 515
25.3.1 用户表设计 517
25.3.2 朋友表设计 517
25.3.3 留言表设计 518
25.4 搭建系统运行环境 518
25.4.1 添加Hibernate支持 519
25.4.2 添加Struts 2支持 522
25.5 Dao层POJO和映射文件 524
25.5.1 配置数据链接 524
25.5.2 生成映射文件 526
25.5.3 生成POJO类 529
25.6 Biz业务逻辑层 531
25.6.1 数据查询逻辑 532
25.6.2 注册逻辑 534
25.6.3 留言信息保存逻辑 535
25.6.4 添加好友逻辑 535
25.7 开发第三步:Action控制层 536
25.7.1 登录控制 537
25.7.2 注册控制 538
25.7.3 添加好友控制 539
25.7.4 留言信息控制 540
25.7.5 好友信息查看控制 542
25.7.6 系统退出控制 543
25.7.7 在struts.xml文件中配置Action 544
25.8 视图层的编写 545
25.8.1 用户注册功能 545
25.8.2 用户登录功能 546
25.8.3 聚友系统首页 547
25.8.4 查看好友列表 549
25.8.5 查看好友留言 551
25.8.6 添加好友功能 553
25.8.7 给好友留言 554
25.9 小结 556
第26章 网上银行系统 557
26.1 系统概述 557
26.2 系统目标和需求分析 557
26.3 数据库设计 559
26.4 搭建开发环境 561
26.4.1 创建项目 562
26.4.2 添加Struts 2支持 562
26.4.3 添加Spring支持 563
26.4.4 添加Hibernate支持 564
26.4.5 配置事务管理 570
26.4.6 让应用程序启动时自动装载Spring容器 571
26.5 系统目录结构 571
26.6 生成实体类和映射文件 572
26.7 客户功能实现 578
26.7.1 系统登录 578
26.7.2 客户主页面 586
26.7.3 修改密码 589
26.7.4 修改个人信息 592
26.7.5 存款 597
26.7.6 取款 603
26.7.7 转账 606
26.7.8 查询交易记录 610
26.8 管理员功能实现 614
26.8.1 管理员登录 615
26.8.2 显示用户信息 618
26.8.3 查询用户 623
26.8.4 冻结、启用功能 625
26.8.5 删除用户 627
26.8.6 开户 628
26.9 小结 632