第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 WebWork概述 6
1.1.4 Struts 2简介 7
1.2配置Struts 2运行环境 8
1.3 Struts 2第一个应用示例 9
1.4 Struts 2处理流程 12
1.5 Struts 2配置详解 15
1.5.1 web.xml配置 15
1.5.2 struts.properties配置 17
1.6 struts.xml配置详解 19
1.6.1文件结构 19
1.6.2 Bean配置 22
1.6.3常量配置 23
1.6.4包配置 24
1.6.5命名空间配置 25
1.6.6包含配置 26
第2章Action配置 27
2.1实现Action控制类 27
2.2 Struts 2访问Servlet API 29
2.2.1间接访问Servlet API 29
2.2.2直接访问Servlet API 32
2.3配置Action 35
2.3.1 Action配置 35
2.3.2动态访问调用 36
2.3.3使用method属性 39
2.3.4使用通配符 41
2.3.5默认Action的配置 43
2.4配置Result 44
2.4.1 Result映射 44
2.4.2 Result类型 45
2.4.3常用结果类型 46
2.5使用注解配置Action 49
2.5.1与Action配置相关的注解 49
2.5.2使用注解配置Action示例 51
第3章 拦截器 55
3.1拦截器简介 55
3.2拦截器的配置与使用 56
3.2.1配置拦截器 56
3.2.2使用拦截器 58
3.2.3配置默认拦截器 59
3.3自定义拦截器 61
3.3.1自定义拦截器类 61
3.3.2使用自定义拦截器类 63
3.3.3文字过滤拦截器实例 64
3.4深入拦截器 67
3.4.1拦截器的方法过滤 68
3.4.2拦截器的拦截顺序 71
3.4.3拦截结果监听器 73
3.4.4覆盖拦截器栈中拦截器的参数值 75
3.5系统拦截器 77
3.5.1系统拦截器简介 77
3.5.2 timer拦截器实例 81
第4章 类型转换 83
4.1使用Struts 2中的类型转换 83
4.1.1 Struts 2内置类型转换器 83
4.1.2简单类型转换 84
4.1.3使用OGNL表达式 86
4.1.4使用集合类型属性 89
4.2自定义类型转换器 91
4.2.1基于OGNL的类型转换器 91
4.2.2基于Struts 2的类型转换器 92
4.2.3注册自定义类型转换器 94
4.2.4数组属性类型转换器 98
4.3类型转换中的异常处理 101
4.3.1一个简单的类型转换异常处理 102
4.3.2复合类型转换异常处理 104
4.4使用类型转换注解 106
4.4.1TypeConversion注解 106
4.4.2 Conversion注解 108
4.4.3 Element注解 108
4.4.4 Key注解 108
4.4.5 KeyProperty注解 109
4.4.6 CreateIfNull注解 109
第5章Struts 2标签库 110
5.1 Struts 2标签库概述 110
5.1.1标签库简介 110
5.1.2 Struts 2标签库分类 111
5.2控制标签 112
5.2.1 if/else if/else标签 112
5.2.2 iterator标签 115
5.2.3 append标签 117
5.2.4 merge标签 118
5.2.5 sort标签 120
5.2.6 generator标签 121
5.2.7 subset标签 122
5.3数据标签 124
5.3.1 property标签 125
5.3.2 set标签 126
5.3.3 push标签 127
5.3.4 param标签 129
5.3.5 bean标签 130
5.3.6 action标签 131
5.3.7 include标签 134
5.3.8 url标签 135
5.3.9 date标签 138
5.3.10 debug标签 139
5.4主题模板 141
5.5表单UI标签 143
5.5.1表单标签的公共属性 144
5.5.2 form标签 145
5.5.3 textfield、 password和 textarea标签 146
5.5.4 select标签 147
5.5.5 optgroup标签 148
5.5.6 doubleselect标签 149
5.5.7 updownselect标签 151
5.5.8 optiontransferselect标签 152
5.5.9 radio标签 155
5.5.10 checkboxlist标签 155
5.5.11 combobox标签 156
5.5.12 file标签 157
5.6非表单标签 157
5.6.1 actionerror、 actionmessage和 fielderror标签 157
5.6.2 component标签 158
第6章 输入校验 161
6.1输入校验概述 161
6.1.1输入校验的必要性 161
6.1.2客户端校验与服务器端校验 162
6.1.3类型换转与输入校验关系 166
6.2 Struts 2手动完成输入校验 166
6.2.1 validate()方法输入校验 166
6.2.2 validateXxx()方法输入校验 169
6.2.3输入校验流程 172
6.3基本输入校验 173
6.3.1定义校验规则 174
6.3.2校验器配置风格 175
6.3.3输入校验的国际化信息 177
6.4使用Struts 2内置校验器 179
6.4.1常用内置校验器 179
6.4.2必填校验器 181
6.4.3必填字符串校验器 182
6.4.4字符串长度校验器 183
6.4.5整数校验器 184
6.4.6浮点数值校验器 185
6.4.7日期校验器 186
6.4.8邮件地址校验器 188
6.4.9网址校验器 190
6.4.10正则表达式校验器 191
6.4.11类型转换校验器 192
6.4.12表达式校验器 193
6.4.13字段表达式校验器 194
6.4.14复合类型校验器 196
6.5使用自定义校验器 202
第7章 文件上传与下载 205
7.1文件上传 205
7.1.1文件上传的原理 205
7.1.2 Struts 2对上传文件的支持 206
7.1.3在Struts 2中实现文件上传 206
7.1.4实现上传文件的过滤 211
7.2多文件上传 213
7.2.1使用数组实现多文件上传 214
7.2.2使用List实现多文件上传 217
7.3文件下载 220
7.3.1 Struts 2实现文件下载 220
7.3.2下载权限控制示例 223
第8章Struts 2扩展与高级技巧 229
8.1 Struts 2国际化 229
8.1.1 Struts 2实现国际化机制 229
8.1.2国际化资源文件 230
8.1.3配置资源文件 232
8.1.4加载国际化资源文件的方式 233
8.1.5 Struts 2国际化应用 234
8.1.6带占位符的国际化资源文件 235
8.1.7实现自由选择语言环境 239
8.2应用中的异常处理 241
8.2.1 Struts 2异常处理机制 242
8.2.2异常处理示例 243
8.3 OGNL 244
8.4避免表单重复提交与等待页面 250
8.4.1使用token拦截器 250
8.4.2使用tokenSession拦截器 253
8.4.3自动显示等待页面 254
第9章 用户管理系统 257
9.1系统概述 257
9.1.1需求分析 257
9.1.2系统用例图 258
9.1.3系统设计 260
9.2数据库设计 260
9.3数据库连接模块的实现 261
9.4普通用户模块的实现 262
9.4.1用户登录 262
9.4.2查看个人信息 265
9.4.3查看所有用户信息 267
9.4.4修改个人信息 268
9.5普通管理员模块的实现 271
9.5.1管理员登录 271
9.5.2查看所有用户 272
9.5.3删除用户 273
9.5.4修改用户信息 274
9.5.5添加新用户 275
9.5.6查看所有管理员 278
9.5.7查看新增用户 279
9.6超级管理员模块的实现 281
9.6.1查找所有管理员 282
9.6.2删除普通管理员 282
9.6.3修改普通管理员 284
9.6.4添加管理员 285
第2篇Hibernate 290
第10章Hibernate简介 290
10.1 ORM简介 290
10.1.1 ORM概述 290
10.1.2 ORM面临的问题 291
10.1.3 ORM的优点 293
10.2 Hibernate框架 294
10.2.1 Hibernate框架的优点 294
10.2.2 Hibernate架构 295
10.2.3 Hibernate核心接口 295
10.2.4 Hibernate下载与安装 296
10.3第一个Hibernate程序 297
10.3.1使用Hibernate编程的步骤 297
10.3.2创建数据库 297
10.3.3编写持久化对象类 298
10.3.4编写Hibemate配置文件 299
10.3.5编写HibemateSession- Factory类 300
10.3.6编写数据库操作Dao类 302
10.3.7编写业务控制Action类 303
10.3.8配置Action类 304
10.3.9创建用户添加页面 304
10.3.10创建用户列表页面 305
10.3.11运行程序 305
10.4 Hibernate基础配置 306
10.4.1 Hibernate配置文件 307
10.4.2 Hibernate映射文件 309
10.5 Session接口 312
10.5.1构建SessionFactory 312
10.5.2 Session创建与关闭 315
10.5.3使用Session操作对象 315
10.5.4使用Session管理连接 317
10.5.5使用Session管理缓存 318
10.5.6使用Session生成检索对象 318
第11章Hibernate映射与检索 319
11.1集合映射 319
11.1.1 Java集合类 319
11.1.2 Set映射 320
11.1.3 List映射 324
11.1.4 Map映射 327
11.2实体对象关联关系映射 329
11.2.1单向n-1关联 330
11.2.2单向1-1关联 333
11.2.3双向1-1关联 337
11.2.4单向1-n关联 339
11.2.5双向1-n关联 343
11.2.6单向n-n关联 347
11.2.7双向n-n关联 351
11.3 Hibemate检索方式 354
11.3.1 HQL基础 354
11.3.2动态查询和动态实例查询 359
11.3.3分页查询 360
11.3.4 HQL嵌套子查询 361
11.3.5多表查询 362
11.3.6 QBC检索方式 367
第12章Hibernate事务、并发及缓存管理 371
12.1 Hibernate的事务管理 371
12.1.1事务的特性 371
12.1.2事务隔离 372
12.1.3在Hibernate中设置事务隔离级别 373
12.1.4在Hibernate中使用事务 374
12.2悲观锁和乐观锁 376
12.2.1悲观锁 376
12.2.2乐观锁 377
12.3 Hibemate缓存 382
12.3.1缓存的概念 382
12.3.2一级缓存与二级缓存比较 384
12.3.3一级缓存的管理 385
12.3.4二级缓存的管理 385
12.4 Hibernate查询缓存 389
12.4.1 Hibernate的查询操作 389
12.4.2查询缓存策略 390
12.4.3查询缓存的管理 391
12.5 Hibemate性能优化 392
12.5.1优化系统设计 393
12.5.2批量数据操作优化 393
第13章 新闻发布系统 396
13.1系统设计 396
13.1.1系统概述与分析 396
13.1.2系统模块结构 397
13.2数据库设计 398
13.3搭建Struts 2+Hibernate环境 399
13.4通用模块实现 401
13.4.1实现数据库连接 402
13.4.2建立业务实体对象 402
13.5新闻类别管理 403
13.5.1查看所有新闻类别 403
13.5.2添加类别 405
13.5.3修改类别 407
13.5.4删除类别 409
13.6新闻管理 410
13.6.1查看所有新闻 410
13.6.2查看新闻详情 415
13.6.3发布新闻 417
13.6.4修改新闻 418
13.7用户管理 420
13.7.1管理员登录 420
13.7.2修改个人密码 422
13.7.3修改个人资料 423
13.7.4退出系统 424
13.8新闻浏览 425
13.8.1首页 425
13.8.2查看更多新闻 427
13.8.3查看新闻详情 429
第3篇Spring 434
第14章Spring概述 434
14.1 Spring框架简介 434
14.2 Spring的下载和安装 435
14.3 Spring快速入门 436
14.3.1 Spring体系简介 436
14.3.2单态模式回顾 438
14.3.3工厂模式回顾 439
14.3.4单态模式与工厂模式的Spring实现 442
14.4控制反转(IoC)与依赖注入(DI) 443
14.4.1控制反转(IoC) 444
14.4.2依赖注入(DI) 444
14.5多种依赖注入方式 445
14.5.1设值注入 445
14.5.2构造注入 447
14.5.3属性注入 450
14.5.4方法注入 451
第15章 装配Bean 452
15.1 Bean容器 452
15.1.1 Bean工厂 452
15.1.2使用应用程序环境 456
15.2 Bean实例的创建方式 458
15.2.1调用构造器创建Bean实例 458
15.2.2调用静态工厂方法创建Bean 461
15.2.3调用实例工厂方法创建Bean 463
15.3 Bean的生命周期 464
15.3.1 BeanFactory中Bean的生命周期 464
15.3.2 ApplicationContext中Bean的生命周期 470
15.4 Bean的基本装配 472
15.4.1使用XML进行装配 472
15.4.2 Bean命名 473
15.5自动装配 474
15.5.1自动装配类型 474
15.5.2默认自动装配 478
15.5.3使用自动装配前提 478
15.6使用Spring特殊Bean 479
15.6.1 Bean后处理器 479
15.6.2容器后处理器 482
15.6.3配置信息分离 483
第16章 面向切面编程 485
16.1 AOP介绍 485
16.1.1 AOP术语介绍 485
16.1.2 Spring AOP实现 486
16.2使用Proxy Factoty Bean 488
16.3创建Advice 488
16.3.1前置通知 489
16.3.2后置通知 491
16.3.3环绕通知 493
16.3.4异常通知 494
16.4定义Pointcut 496
16.4.1定义Pointcut 496
16.4.2理解Advisor 498
16.4.3静态Pointcut 499
16.4.4动态Pointcut 503
16.5自动代理 505
16.5.1实现类介绍 505
16.5.2使用 BeanNameAutoproxy- Creator 506
16.5.3使用DefaultAdvisorAuto- 507
ProxyCreator 507
第17章Spring Web框架 509
17.1 Spring MVC框架简介 509
17.2配置DispatcherServlet 512
17.3控制器 514
17.3.1命令控制器 515
17.3.2表单控制器 518
17.3.3多动作控制器 520
17.4处理器映射 523
17.5视图与视图解析 524
17.6中文乱码问题 526
17.7 Spring对文件上传的支持 526
17.8异常处理 529
第18章 网络相册系统 531
18.1系统概述 531
18.1.1需求分析 531
18.1.2系统用例图 532
18.1.3系统设计 533
18.1.4数据库设计 533
18.2系统配置 535
18.2.1整合原理 535
18.2.2整合流程 535
18.2.3 applicationContext.xml 536
18.2.4 struts.xml 537
18.3系统模块开发 539
18.3.1用户注册 539
18.3.2用户登录 541
18.3.3查看修改个人信息 542
18.3.4创建相册 544
18.3.5上传图片 546
18.3.6查看相册 548
18.3.7管理相册 550
18.3.8添加好友 551
18.3.9发表好友图片评论 553
18.3.10查看好友评论 556
第4篇 综合实例 560
第19章 网上书店 560
19.1系统设计 560
19.1.1需求分析 560
19.1.2功能设计 562
19.2数据库设计 563
19.3系统实现 565
19.3.1搭建Struts 2+Spring+ Hibernate环境 566
19.3.2建立业务实体对象 568
19.3.3用户注册模块 569
19.3.4图书显示模块 575
19.3.5购物车模块 578
19.3.6后台管理模块 585