第一篇 环境搭建篇 3
第1章 建立开发环境 3
1.1 建立Java的环境 3
1.1.1 JDK的下载和安装 3
1.1.2 设定JAVA HOME、CLASSPATH和Path 4
1.1.3 验证JDK是否安装成功 5
1.2 建立Tomcat环境 5
1.2.1 Tomcat简介 6
1.2.2 Tomcat的下载 6
1.2.3 Tomcat的安装配置 7
1.2.4 验证Tomcat是否安装成功 7
1.2.5 Tomcat的目录结构 8
1.3 搭建Java Web开发环境 8
1.3.1 MyEclipse的下载和安装 9
1.3.2 在MyEclipse中配置环境 10
1.4 搭建MySQL数据库环境 13
1.4.1 MySQL概述 13
1.4.2 MySQL的下载 14
1.4.3 MySQL的安装与配置 15
1.4.4 SQLyog访问服务器 19
1.4.5 使用MySQL数据库 19
1.5 创建和发布Web应用程序 21
1.5.1 创建Web项目、设计项目目录结构 21
1.5.2 编写项目代码、部署和运行Web项目 22
1.6 小结 24
第二篇 Java Web基础篇 27
第2章 JSP技术 27
2.1 JSP技术简介 27
2.1.1 JSP技术的特征 27
2.1.2 JSP技术的原理 28
2.1.3 JSP程序的执行过程 29
2.2 JSP页面的组成 33
2.2.1 静态内容 33
2.2.2 JSP的注释 34
2.2.3 JSP的指令元素 35
2.2.4 JSP的表达式 39
2.2.5 JSP的小脚本 40
2.2.6 JSP的声明 41
2.2.7 JSP的动作标签 41
2.3 JSP的内置对象 44
2.3.1 out对象 44
2.3.2 request对象 45
2.3.3 response对象 46
2.3.4 session对象 47
2.3.5 application对象 50
2.3.6 其他内置对象 51
2.4 四种属性范围 52
2.4.1 page属性范围 53
2.4.2 request属性范围 54
2.4.3 session属性范围 56
2.4.4 application属性范围 56
2.5 Servlet技术 57
2.5.1 Servlet简介 57
2.5.2 创建第一个Servlet 57
2.5.3 Servlet的生命周期 58
2.5.4 Servlet的编译和部署 59
2.5.5 Servlet的常用类和接口 61
2.6 JSTL和EL 62
2.6.1 EL表达式 62
2.6.2 EL的特点和使用简介 62
2.6.3 EL语法 63
2.6.4 EL隐式对象 65
2.6.5 什么是JSTL 66
2.6.6 使用JSTL 67
2.6.7 JSTL核心标签库 68
2.7 小结 70
第3章 用MVC架构实现Web项目开发 71
3.1 MVC的概述 71
3.1.1 MVC的思想及特点 71
3.1.2 常见的MVC技术 72
3.2 JDBC技术 73
3.2.1 JDBC简介 73
3.2.2 通过JDBC连接MySQL数据库 74
3.3 JavaBean 78
3.3.1 JavaBean简介 78
3.3.2 在JSP中访问JavaBean 78
3.3.3 JavaBean与MVC框架 80
3.4 使用MVC模式设计用户登录模块 81
3.4.1 项目设计简介 81
3.4.2 模型设计 83
3.4.3 视图设计 84
3.4.4 控制器设计 85
3.4.5 部署和运行程序 86
3.5 小结 86
第三篇 Struts 2框架篇 89
第4章 Struts 2概述 89
4.1 Struts 2基础 89
4.1.1 Struts 2简介 89
4.1.2 Struts2的MVC模式 90
4.1.3 Struts 2的工作原理 91
4.2 配置Struts 2的运行环境 92
4.2.1 下载Struts 2框架 92
4.2.2 Struts 2的配置文件 94
4.3 使用Struts 2实现HelloWorld示例 96
4.3.1 新建Web项目 96
4.3.2 添加Struts 2框架支持文件 98
4.3.3 新建JSP页面 98
4.3.4 在web.xml文件中添加过滤器 99
4.3.5 创建业务控制器HelloAction类 99
4.3.6 编写struts.xml配置文件 100
4.3.7 部署测试项目 100
4.4 小结 101
第5章 Struts 2的架构和运行流程 103
5.1 Struts 2的系统架构 103
5.1.1 Struts 2的模块和运行流程 103
5.1.2 Struts 2各模块的说明 104
5.1.3 Struts 2的核心概念 105
5.2 Struts 2的基本流程 106
5.2.1 Struts 2的运行流程 106
5.2.2 核心控制器 109
5.2.3 业务控制器 110
5.2.4 模型组件 110
5.2.5 视图组件 111
5.3 Struts 2的基本配置 111
5.3.1 web.xml文件的配置 112
5.3.2 struts.xml文件的配置 113
5.3.3 struts.properties文件的配置 115
5.3.4 struts.xml文件的结构 115
5.4 配置struts.xml 117
5.4.1 Bean的配置 117
5.4.2 常量的配置 118
5.4.3 包的配置 118
5.4.4 命名空间的配置 119
5.4.5 包含的配置 121
5.4.6 Action的配置 121
5.4.7 结果的配置 122
5.4.8 拦截器的配置 122
5.5 小结 123
第6章 Action和Result的配置 125
6.1 Action和Result的基础 125
6.1.1 Action的基础知识 125
6.1.2 Result的基础知识 126
6.2 Action的实现 126
6.2.1 POJO的实现 126
6.2.2 实现Action接口 127
6.2.3 继承ActionSupport 128
6.2.4 execute方法内部的实现 129
6.2.5 Struts 2访问Servlet API 130
6.3 Action的配置 134
6.3.1 Struts 2中Action的作用 134
6.3.2 配置Action 135
6.3.3 分模块配置方式 135
6.3.4 动态方法调用 136
6.3.5 用method属性处理调用方法 138
6.3.6 使用通配符 139
6.3.7 配置默认的Action 140
6.4 Action的数据 140
6.4.1 数据来源 140
6.4.2 基本的数据对应方式 141
6.4.3 传入非String类型的值 144
6.4.4 如何处理传入多个值 145
6.5 使用注解来配置Action 145
6.5.1 与Action配置相关的注解 145
6.5.2 使用注解配置Action示例 147
6.6 常用的Result类型 149
6.6.1 如何配置Result 149
6.6.2 预定义的ResultType 150
6.6.3 名称为dispatcher的ResultType 152
6.6.4 名称为redirect的ResultType 152
6.6.5 名称为redirectAction的ResultType 154
6.6.6 名称为chain的ResultType 156
6.6.7 其他ResultType 156
6.7 Result的配置 157
6.7.1 使用通配符动态配置Result 157
6.7.2 通过请求参数动态配置Result 157
6.7.3 全局Result 159
6.7.4 自定义Result 160
6.8 小结 160
第7章 Struts 2的拦截器 161
7.1 拦截器简介 161
7.1.1 为什么需要拦截器 161
7.1.2 拦截器的工作原理 162
7.2 拦截器的配置 163
7.2.1 配置拦截器 163
7.2.2 使用拦截器 164
7.2.3 默认拦截器 165
7.3 内建拦截器 166
7.3.1 内建拦截器介绍 166
7.3.2 内建拦截器的配置 167
7.4 自定义拦截器 168
7.4.1 实现拦截器类 168
7.4.2 自定义拦截器示例 169
7.5 深入拦截器 172
7.5.1 拦截器的方法过滤 172
7.5.2 使用拦截器实现权限控制 173
7.6 小结 176
第8章 Struts 2的标签库 177
8.1 Struts 2标签库概述 177
8.2 Struts 2的表单标签 178
8.2.1 表单标签的公共属性 178
8.2.2 简单的表单标签 179
8.2.3 <s:checkboxlist>标签 180
8.2.4 <s:combobox>标签 182
8.2.5 <s:optgroup>标签 184
8.2.6 <s:doubleseleet>标签 185
8.2.7 <s:file>标签 185
8.2.8 <s:token>标签 186
8.2.9 <s:updownselect>标签 187
8.2.10 <s:optiontransferselect>标签 188
8.3 Struts 2的非表单标签 189
8.3.1 <s:actionerror>、<s:actionmessage>和<s:fielderror>标签 189
8.3.2 <s:component>标签 190
8.4 控制标签 191
8.4.1 <s:if>、<s:elseif>、<s:else>标签 191
8.4.2 <s:iterator>标签 192
8.4.3 <s:append>标签 193
8.4.4 <s:merge>标签 194
8.4.5 <s:sort>标签 195
8.4.6 <s:generator>标签 196
8.4.7 <s:subset>标签 197
8.5 数据标签 197
8.5.1 <s:aetion>标签 197
8.5.2 <s:property>标签 199
8.5.3 <s:param>标签 200
8.5.4 <s:bean>标签 200
8.5.5 <s:date>标签 201
8.5.6 <s:set>标签 202
8.5.7 <s:url>标签 203
8.5.8 <s:include>标签 204
8.5.9 <s:debug>标签 204
8.5.10 <s:push>标签 205
8.5.11 <s:il8n>和<s:text>标签 205
8.6 小结 206
第9章 OGNL和类型转换 207
9.1 OGNL和Struts 2 207
9.1.1 数据转移和类型转换 207
9.1.2 OGNL概述 207
9.1.3 OGNL表达式 208
9.1.4 OGNL如何融入框架 209
9.2 类型转换 210
9.2.1 简单类型转换 210
9.2.2 使用OGNL表达式 212
9.3 自定义类型转换器 216
9.3.1 基于OGNL的类型转换器 216
9.3.2 基于Struts 2的类型转换器 217
9.3.3 注册自定义类型转换器 218
9.4 类型转换的错误处理 223
9.5 小结 224
第10章 Struts 2的验证框架 225
10.1 数据校验概述 225
10.2 编程实现Struts 2的数据校验 226
10.2.1 重写validate方法的数据校验 226
10.2.2 重写validateXxx方法的数据校验 228
10.2.3 Struts 2的输入校验流程 230
10.3 Struts 2验证框架 231
10.3.1 验证框架的作用 232
10.3.2 编写校验规则文件 232
10.3.3 校验器的配置格式 233
10.3.4 常用的内置校验器 235
10.3.5 校验框架的运行流程 235
10.3.6 使用Struts 2验证框架实现验证 236
10.4 小结 240
第11章 Struts 2的国际化 241
11.1 国际化简介 241
11.1.1 国际化概述 241
11.1.2 Java内置的国际化 243
11.1.3 资源文件的定义和使用 244
11.1.4 使用占位符输出动态内容 246
11.2 Struts 2国际化简介 247
11.2.1 Struts 2实现国际化机制 247
11.2.2 配置全局资源文件 247
11.2.3 加载资源文件的方式 248
11.2.4 资源文件的加载顺序 249
11.3 使用Struts 2实现页面国际化 250
11.3.1 手动设置语言环境实现国际化 250
11.3.2 自行选择语言环境实现国际化 256
11.4 小结 258
第12章 Struts 2的文件上传和下载 259
12.1 文件上传 259
12.1.1 文件上传原理 259
12.1.2 使用Struts 2实现单个文件上传 260
12.1.3 动态设置文件上传目录 263
12.1.4 限制文件的大小和类型 264
12.1.5 实现上传多个文件 266
12.1.6 通过添加文件域上传多个文件 268
12.2 文件下载 269
12.2.1 概述 269
12.2.2 使用Struts 2实现文件下载 270
12.3 小结 271
第13章 Struts 2的Ajax支持 273
13.1 Ajax概述 273
13.1.1 Aiax的发展和应用 273
13.1.2 Aiax的核心技术 275
13.1.3 Aiax示例 276
13.2 Struts 2的Ajax标签 277
13.2.1 Struts 2对Ajax的支持 278
13.2.2 <sx:div>标签 278
13.2.3 <sx:a>和<sx:submit>标签 281
13.2.4 <sx:head>标签 282
13.2.5 <sx:tabbedpanel>标签 283
13.2.6 <sx:autocompleter>标签 284
13.2.7 <sx:tree>和<sx:treenode>标签 285
13.2.8 <sx:datetimepicker>标签 286
13.2.9 <sx:textarea>标签 287
13.3 常见框架插件 288
13.3.1 jQuery 288
13.3.2 DWR 289
13.3.3 JSON 290
13.3.4 Struts 2、jQuery、JSON和Ajax联合开发 291
13.4 小结 295
第14章 使用Struts 2实现用户信息CRUD 297
14.1 概述 297
14.1.1 功能简介 297
14.1.2 使用技术 297
14.1.3 准备开发环境 298
14.2 数据库的设计 299
14.2.1 创建数据库 299
14.2.2 创建数据表 300
14.3 实现Dao层 301
14.3.1 实现数据库连接 302
14.3.2 实现数据访问层 303
14.4 实现Biz层 307
14.5 使用Struts 2实现表现层 308
14.5.1 实现合并Action类 308
14.5.2 显示全部用户信息 309
14.5.3 添加用户 311
14.5.4 修改用户 314
14.5.5 删除用户 316
14.5.6 显示用户详细信息 317
14.6 加入国际化 318
14.6.1 国际化信息文件 318
14.6.2 使用国际化信息 319
14.7 相关输入校验 320
14.7.1 页面添加验证 321
14.7.2 验证信息国际化 322
14.8 小结 323
第四篇 Hibernate框架篇 327
第15章 Hibernate初步 327
15.1 Hibernate概述 327
15.1.1 JDBC的困扰 327
15.1.2 Hibernate的优势 327
15.1.3 持久化和ORM 328
15.1.4 Hibernate的体系结构 328
15.2 Hibernate入门 329
15.2.1 Hibernate的下载和安装 329
15.2.2 Hibernate的执行流程 331
15.2.3 第一个Hibernate程序 331
15.3 使用Hibernate操作数据库 341
15.3.1 使用Hibernate加载数据 341
15.3.2 使用Hibernate删除数据 343
15.3.3 使用Hibernate修改数据 344
15.4 使用MyEclipse工具简化数据库开发 345
15.4.1 使用工具给项目添加Hibernate支持 345
15.4.2 使用工具自动生成实体类和映射文件 350
15.4.3 编写BaseHibernateDAO类 352
15.5 使用Annotation注解实现Hibernate零配置 356
15.5.1 给项目添加Annotation支持 357
15.5.2 生成带注解的持久化类 357
15.5.3 测试Annotation注解 360
15.6 小结 361
第16章 Hibernate的关联映射 363
16.1 单向多对一映射 363
16.1.1 多对一映射的配置 363
16.1.2 测试多对一映射 365
16.2 单向一对多映射 366
16.2.1 单向一对多映射的配置 366
16.2.2 测试一对多映射 367
16.3 双向多对一映射 368
16.3.1 添加数据 368
16.3.2 删除数据 374
16.3.3 更改数据 377
16.4 双向一对一关联映射 378
16.4.1 基于外键的一对一映射 378
16.4.2 基于主键的一对一映射 382
16.5 多对多关联映射 386
16.5.1 多对多映射配置 386
16.5.2 添加数据 389
16.5.3 删除数据 393
16.6 基于Annotation注解的关联映射 394
16.6.1 多对一双向关联Annotation注解的实现 394
16.6.2 一对一双向关联Annotation注解的实现 402
16.6.3 多对多双向关联Annotation注解的实现 407
16.7 小结 413
第17章 Hibernate检索方式 415
17.1 HQL查询方式 415
17.1.1 基本查询 415
17.1.2 动态实例查询 420
17.1.3 分页查询 421
17.1.4 条件查询 422
17.1.5 连接查询 424
17.1.6 子查询 429
17.2 QBC查询 432
17.2.1 基本查询 433
17.2.2 组合查询 436
17.2.3 关联查询 437
17.2.4 分页查询 438
17.2.5 QBE查询 439
17.2.6 离线查询 441
17.3 小结 442
第18章 Hibernate进阶 443
18.1 Hibernate的批量处理 443
18.1.1 批量插入 443
18.1.2 批量更新 447
18.1.3 批量删除 448
18.2 Hibernate事务 450
18.2.1 事务的特性 450
18.2.2 并发控制 450
18.2.3 在Hibernate中使用事务 451
18.2.4 Hibernate的悲观锁和乐观锁 452
18.3 Hibernate缓存 465
18.3.1 缓存的概念 465
18.3.2 缓存的范围 465
18.3.3 Hibernate中的第一级缓存 465
18.3.4 Hibernate中的第二级缓存 470
18.3.5 Hibernate中的查询缓存 473
18.4 Hibernate使用数据库连接池 476
18.4.1 配置数据源名称 478
18.4.2 在Hibernate中使用数据库连接池 480
18.5 Hibernate调用存储过程 481
18.6 小结 484
第19章 Struts 2与Hibernate的整合 485
19.1 环境搭建 485
19.2 登录功能的流程 486
19.3 实现DAO层 486
19.4 实现Biz层 487
19.5 实现Action 488
19.6 编写配置文件 489
19.6.1 配置struts.xml 489
19.6.2 配置web.xml 489
19.7 创建登录页面 490
19.8 小结 492
第五篇 Spring框架篇 495
第20章 Spring的基本应用 495
20.1 Spring简介 495
20.1.1 Spring的背景 496
20.1.2 Spring的框架 496
20.2 一个简单的Spring示例 496
20.2.1 搭建Spring开发环境 496
20.2.2 编写HelloWorld类 499
20.2.3 配置applicationContext.xml文件 499
20.2.4 编写测试类 500
20.3 Spring核心机制:依赖注入 500
20.3.1 理解控制反转 500
20.3.2 如何使用Spnng的依赖注入 501
20.4 小结 503
第21章 深入Spring中的Bean 505
21.1 Bean工厂的ApplicationContext 505
21.2 Bean的作用域 506
21.3 Bean的装配方式 508
21.3.1 基于XML的Bean装配 508
21.3.2 基于Annotation的Bean装配 512
21.3.3 自动Bean装配 514
21.4 小结 515
第22章 面向方面编程(Spring AOP) 517
22.1 SpringAOP简介 517
22.1.1 为什么使用AOP 517
22.1.2 AOP的重要概念 517
22.2 基于代理类ProxyFactoryBean的AOP实现 518
22.2.1 编写数据访问层 518
22.2.2 编写业务逻辑层 519
22.2.3 编写方面代码 519
22.2.4 将“业务逻辑代码”和“方面代码”组装进代理类 521
22.2.5 编写测试类 522
22.3 Spring AOP通知(Advice) 523
22.3.1 后置通知(After ReturningAdvice) 523
22.3.2 异常通知(Throws Advice) 524
22.3.3 环绕通知(Interception Around Advice) 526
22.4 基于Schema的AOP实现 527
22.5 基于@AspectJ注解的AOP实现 531
22.6 小结 534
第23章 Spring整合Hibernate与Struts 2 535
23.1 Spring整合Hibernate 535
23.1.1 添加Spring和Hibernate支持 535
23.1.2 生成实体类和映射文件 539
23.1.3 DAO开发 539
23.1.4 Biz层开发 541
23.1.5 配置ApplicationCONTEXT.XML 541
23.1.6 编写测试类 542
23.2 Spring整合Struts 2 542
23.2.1 添加Struts 2支持 542
23.2.2 创建Action 543
23.2.3 Spring整合Struts2的步骤 544
23.3 基于Annotation注解的SSH2整合 546
23.3.1 环境搭建 547
23.3.2 生成基于注解的实体类 547
23.3.3 基于注解的DAO开发 547
23.3.4 基于注解的Biz开发 548
23.3.5 基于注解的Action开发 549
23.3.6 修改相关的配置文件 550
23.3.7 编写页面文件 551
23.4 小结 552
第24章 Spring事务管理 553
24.1 Spring事务管理的方式 553
24.2 Spring 3声明式事务管理 553
24.2.1 基于AOP的事务管理 554
24.2.2 基于@Transactional注解的事务管理 557
24.3 基于AOP事务管理实现银行转账 558
24.3.1 生成实体类和映射文件 558
24.3.2 实现DAO层 559
24.3.3 实现Biz层 560
24.3.4 创建Action 560
24.3.5 Spring中配置DAO、Biz和AccountManager 561
24.3.6 struts.xml中配置AccountManager类 562
24.3.7 配置基于AOP的声明式事务 562
24.3.8 编写转账页面 562
24.3.9 声明式事务测试 563
24.4 基于@Transactional注解实现银行转账 564
24.5 小结 565
第25章 Spring Web 567
25.1 Spring MVC概述 567
25.2 配置DispatcherServlet 568
25.3 控制器 568
25.3.1 命令控制器 569
25.3.2 表单控制器 572
25.3.3 多动作控制器 576
25.4 处理器映射 578
25.5 视图解析器 579
25.6 基于注解的Spring MVC 580
25.7 Spring MVC(注解)文件上传 586
25.8 Spring MVC国际化 588
25.9 小结 590
第六篇 SSH2项目示例篇 593
第26章 新闻发布系统 593
26.1 系统概述及需求分析 593
26.2 系统分析 594
26.3 数据库设计 594
26.4 系统环境搭建 596
26.4.1 创建项目 596
26.4.2 添加Spring支持 596
26.4.3 添加Hibernate支持 598
26.4.4 添加Struts 2支持 601
26.4.5 配置事务管理 601
26.5 系统目录结构 602
26.6 生成实体类和映射文件 603
26.7 新闻浏览 608
26.7.1 新闻浏览首页 608
26.7.2 浏览新闻内容 618
26.8 管理员功能的实现 621
26.8.1 管理员登录 621
26.8.2 新闻管理首页 625
26.8.3 添加新闻 628
26.8.4 修改新闻 631
26.8.5 删除新闻 633
26.8.6 添加主题 635
26.8.7 主题编辑页 636
26.8.8 修改主题 637
26.8.9 删除主题 640
26.9 小结 641
第27章 网上订餐系统 643
27.1 系统概述及需求分析 643
27.2 系统分析 644
27.3 数据库设计 645
27.4 系统环境搭建 647
27.5 配置事务管理 648
27.6 生成实体类和映射文件 649
27.7 前台功能模块的实现 654
27.7.1 浏览餐品 654
27.7.2 查询餐品 663
27.7.3 用户和管理员登录 664
27.7.4 购物车功能 669
27.7.5 订单功能 674
27.8 后台功能模块实现 684
27.8.1 添加餐品 684
27.8.2 管理餐品 687
27.8.3 订单处理 692
27.9 小结 699
第28章 网上银行系统 701
28.1 系统概述 701
28.2 系统分析 701
28.2.1 系统目标 701
28.2.2 需求分析 702
28.3 数据库设计 703
28.4 搭建开发环境 705
28.5 基于@Transactional注解的事务管理 706
28.6 生成实体类和映射文件 707
28.7 客户功能实现 710
28.7.1 系统登录 710
28.7.2 客户主页面 716
28.7.3 修改密码 717
28.7.4 修改个人信息 720
28.7.5 存款 726
28.7.6 取款 732
28.7.7 转账 735
28.7.8 查询交易记录 739
28.8 管理功能实现 744
28.8.1 管理员登录 745
28.8.2 显示用户信息 747
28.8.3 查询用户 753
28.8.4 冻结、启用功能 755
28.8.5 删除用户 757
28.8.6 开户 758
28.9 小结 762