标题：Struts2 Web开发学习实录
图书信息
  作者：杨少敏 (作者), 樊双灵 (作者) 
出版社: 清华大学出版社; 第1版 (2011年7月1日) 
丛书名: Web程序员成功之路 
平装: 604页 
正文语种: 简体中文 
开本: 16 
ISBN: 9787302256601 
条形码: 9787302256601 
产品尺寸及重量: 26.8 x 19.6 x 2.6 cm ; 1.1 Kg
内容简介
《Struts 2 Web开发学习实录》介绍了比较流行的技术Struts 2，全书分为4篇，分别为：Struts 2基础篇、Struts 2知识篇、Struts 2应用篇和实例篇。Struts 2基础篇(第1～2章)讲解了Struts 2的基础配置。Struts 2知识篇(第3～10章)讲解了Struts 2的各种知识，如：数据类型转换、国际化、异常处理、拦截器、数据校验、OGNL、标签库、文件上传下载和避免表单重复提交等。Struts 2应用篇(第11～13章)讲解了Struts 2与Hibernate的整合开发，Struts 2、Hibernate和Spring的整合开发，以及Struts 2与JFreeChart的整合，还有Struts 2和Ajax的结合应用。最后实例篇(第14～15章)通过太极研修院企业网站和人力资源管理系统两个综合实例帮助读者全面掌握在实际项目中使用Struts 2技术，提高对大型应用系统的整体把握，使读者熟练掌握Struts 2技术。
《Struts 2 Web开发学习实录》适合具有一定Web开发经验的开发人员，或具有其他Web框架使用经验的开发人员或想要学习Struts 2开发的开发人员，以及正在从事Java Web开发的开发人员。 
编辑推荐
《Struts 2 Web开发学习实录》：迅速提高读者Web开发能力，全面挖掘读者开发潜力。
一线资深Web程序员经验力作，窗内网独家推荐自学教材。
16个小时视频教学，简化学习过程。
60个实战案例与理论知识综合讲解，提高应用能力。
网站互动教学，QQ群在线帮助读者解疑。 
目录
第1章 Struts 2扬帆起航 1
1.1 Struts 2发展史 2
视频教学：7分钟 2
1.1.1 Struts 2的简介 2
1.1.2 Struts 2和Struts 1的不同 2
1.2 Struts 2体系介绍 4
1.2.1 基础知识——Struts 2框架架构流程 4
1.2.2 基础知识——Struts 2的配置文件 4
1.2.3 基础知识——Struts 2的控制器组件 8
1.2.4 实例描述 8
1.2.5 实例应用 9
1.2.6 运行结果 11
1.2.7 实例分析 12
1.3 Struts 2的Hello World 12
视频教学：8分钟 12
1.3.1 基础知识——Struts 2标签 12
1.3.2 实例描述 13
1.3.3 实例应用 13
1.3.4 运行结果 15
1.3.5 实例分析 16
1.4 常见问题解答 16
1.4.1 配置struts.xml时，class路径错误 16
1.4.2 Struts 2标签库引用错误 16
1.5 习题 17
第2章 完美的Struts 2配置 19
2.1 小小图书馆 20
视频教学：47分钟 20
2.1.1 基础知识——Struts 2的基本配置 20
2.1.2 实例描述 26
2.1.3 实例应用 27
2.1.4 运行结果 31
2.1.5 实例分析 31
2.2 配置Struts 2的命名空间 32
视频教学：35分钟 32
2.2.1 基础知识——深入Struts 2的配置文件 32
2.2.2 实例描述 36
2.2.3 实例应用 36
2.2.4 运行结果 38
2.2.5 实例分析 39
2.3 管理用户 39
视频教学：8分钟 39
2.3.1 基础知识——Action的配置 39
2.3.2 实例描述 41
2.3.3 实例应用 41
2.3.4 运行结果 43
2.3.5 实例分析 44
2.4 部门信息管理 44
视频教学：7分钟 44
2.4.1 基础知识——Result配置 44
2.4.2 实例描述 46
2.4.3 实例应用 46
2.4.4 运行结果 54
2.4.5 实例分析 55
2.5 用户注册动态配置Result 55
视频教学：16分钟 55
2.5.1 基础知识——动态配置Result 56
2.5.2 实例描述 56
2.5.3 实例应用 56
2.5.4 运行结果 58
2.5.5 实例分析 59
2.6 登录异常处理 59
视频教学：7分钟 59
2.6.1 基础知识——Struts 2的异常机制 60
2.6.2 实例描述 60
2.6.3 实例应用 60
2.6.4 运行结果 63
2.6.5 实例分析 64
2.7 常见问题解答 64
2.7.1 Struts 2配置常见异常处理 64
2.7.2 HTTP Status 404 -在Action配置中没有找到相应的Action Name怎么办 65
2.7.3 Struts 2 Tomcat 6 MyEclipse 6.5报404错误 65
2.7.4 Struts 2配置问题Error filterStart如何解决 68
2.8 习题 69
第3章 数据类型大转换 71
3.1 类型转换的意义 72
视频教学：15分钟 72
3.1.1 基础知识——类型转换的意义 72
3.1.2 实例描述 73
3.1.3 实例应用 73
3.1.4 运行结果 75
3.1.5 实例分析 76
3.2 使用Struts 2的类型转换 76
视频教学：11分钟 76
3.2.1 基础知识——Struts 2对类型转换的支持 76
3.2.2 实例描述 82
3.2.3 实例应用 82
3.2.4 运行结果 85
3.2.5 实例分析 86
3.3 自定义类型转换器 86
视频教学：15分钟 86
3.3.1 基础知识——编写自定义类型转换器 86
3.3.2 实例描述 89
3.3.3 实例应用 89
3.3.4 运行结果 92
3.3.5 实例分析 92
3.4 类型转换中的异常处理 93
视频教学：11分钟 93
3.4.1 基础知识——类型转换中的异常处理 93
3.4.2 实例描述 96
3.4.3 实例应用 96
3.4.4 运行结果 100
3.4.5 实例分析 101
3.5 使用类型转换注解 101
视频教学：15分钟 101
3.5.1 基础知识——使用类型转换注解 101
3.5.2 实例描述 105
3.5.3 实例应用 105
3.5.4 运行结果 109
3.5.5 实例分析 110
3.6 常见问题解答 110
3.6.1 有关Struts 2中的java.util.Date类型转换的问题 110
3.6.2 怎么自定义struts 2类型转换的全局与局部错误信息 111
3.6.3 自定义Struts 2中类型转换失败提示信息问题 111
3.6.4 Struts 2标签<s:datetimepicker>中获取到的日期格式如何转换 112
3.7 习题 112
第4章 国际化与异常处理 115
4.1 国际化基础 116
视频教学：28分钟 116
4.1.1 基础知识——国际化与本地化 116
4.1.2 基础知识——Locale类 116
4.1.3 基础知识——资源包 118
4.1.4 基础知识——加载资源文件的顺序 119
4.2 将用户注册国际化 120
视频教学：17分钟 120
4.2.1 基础知识——国际化的配置文件 120
4.2.2 基础知识——在文本中使用参数 121
4.2.3 基础知识——访问国际化消息 122
4.2.4 实例描述 124
4.2.5 实例应用 124
4.2.6 运行结果 125
4.2.7 实例分析 126
4.3 消息提示国际化 126
视频教学：6分钟 126
4.3.1 实例描述 126
4.3.2 实例应用 126
4.3.3 运行结果 127
4.3.4 实例分析 128
4.4 手动改变注册页面国际化 128
视频教学：8分钟 128
4.4.1 基础知识——用户locale流程 128
4.4.2 实例描述 129
4.4.3 实例应用 129
4.4.4 运行结果 133
4.4.5 实例分析 133
4.5 Struts 2异常处理 133
视频教学：7分钟 133
4.5.1 基础知识——传统异常处理方式 134
4.5.2 基础知识——Struts 2异常处理机制 135
4.5.3 基础知识——配置异常处理 136
4.5.4 实例描述 137
4.5.5 实例应用 138
4.5.6 运行结果 139
4.5.7 实例分析 139
4.6 常见问题解答 140
4.6.1 Struts 2国际化中文乱码解决问题 140
4.6.2 使用Struts 2国际化标签的错误问题 141
4.7 习题 141
第5章 Struts 2中的拦路虎——拦截器 143
5.1 配置和使用拦截器 144
视频教学：13分钟 144
5.1.1 基础知识——配置和使用拦截器 144
5.1.2 实例描述 149
5.1.3 实例应用 149
5.1.4 运行结果 150
5.1.5 实例分析 150
5.2 自定义拦截器 150
视频教学：10分钟 150
5.2.1 基础知识——自定义拦截器 150
5.2.2 实例描述 153
5.2.3 实例应用 153
5.2.4 运行结果 155
5.2.5 实例分析 156
5.3 拦截器深度剖析 156
视频教学：25分钟 156
5.3.1 基础知识——深度剖析拦截器 156
5.3.2 实例描述 160
5.3.3 实例应用 160
5.3.4 运行结果 163
5.3.5 实例分析 164
5.4 Struts 2内置拦截器 164
视频教学：7分钟 164
5.4.1 基础知识——内置拦截器 164
5.4.2 实例描述 168
5.4.3 实例应用 169
5.4.4 运行结果 171
5.4.5 实例分析 173
5.5 使用拦截器完成权限控制 173
视频教学：8分钟 173
5.5.1 基础知识——实现权限控制拦截器 173
5.5.2 实例描述 175
5.5.3 实例应用 175
5.5.4 运行结果 177
5.5.5 实例分析 178
5.6 使用拦截器注解 179
视频教学：7分钟 179
5.6.1 基础知识——使用拦截器注解 179
5.6.2 实例描述 180
5.6.3 实例应用 180
5.6.4 运行结果 183
5.6.5 实例分析 183
5.7 常见问题解答 184
5.7.1 Struts 2自带的拦截器已经很强大，是否可以不用自定义拦截器 184
5.7.2 Struts 2拦截器的错误信息如何显示在页面上 184
5.7.3 Struts 2拦截器后跳转页面问题 185
5.7.4 Struts 2拦截器通俗点到底是什么？为什么要用 186
5.8 习题 186
第6章 探索数据校验的奥妙 191
6.1 手动完成输入校验 192
视频教学：16分钟 192
6.1.1 基础知识——手动完成输入校验 192
6.1.2 实例描述 195
6.1.3 实例应用 196
6.1.4 运行结果 198
6.1.5 实例分析 199
6.2 基本输入校验 199
视频教学：7分钟 199
6.2.1 基础知识——基本输入校验 199
6.2.2 实例描述 208
6.2.3 实例应用 209
6.2.4 运行结果 211
6.2.5 实例分析 212
6.3 内置校验器 212
视频教学：74分钟 212
6.3.1 基础知识——内置校验器 212
6.3.2 实例描述 221
6.3.3 实例应用 222
6.3.4 运行结果 223
6.3.5 实例分析 224
6.4 开发自己的验证器 224
视频教学：10分钟 224
6.4.1 基础知识——开发属于自己的验证器 224
6.4.2 实例描述 227
6.4.3 实例应用 227
6.4.4 运行结果 229
6.4.5 实例分析 230
6.5 使用visitor字段验证器复用验证 230
视频教学：8分钟 230
6.5.1 基础知识——VisitorFieldValidator验证器介绍 230
6.5.2 实例描述 232
6.5.3 实例应用 232
6.5.4 运行结果 235
6.5.5 实例分析 236
6.6 使用验证注解 236
视频教学：8分钟 236
6.6.1 基础知识——使用验证注解 236
6.6.2 实例描述 248
6.6.3 实例应用 248
6.6.4 运行结果 252
6.6.5 实例分析 252
6.7 常见问题解答 253
6.7.1 Struts 2.1.8版本是否支持客户端校验 253
6.7.2 校验器的配置风格都有哪些，它们的校验顺序原则，校验器短路的原则 253
6.7.3 Struts 2如何显示验证出错信息 254
6.8 习题 255
第7章 Struts 2中完整的OGNL 257
7.1 使用OGNL表达式获取数据 258
视频教学：25分钟 258
7.1.1 基础知识——OGNL基础 258
7.1.2 实例描述 261
7.1.3 实例应用 261
7.1.4 运行结果 263
7.1.5 实例分析 264
7.2 人员集合的操作 264
视频教学：10分钟 264
7.2.1 基础知识——OGNL对集合的操作 264
7.2.2 实例描述 266
7.2.3 实例应用 267
7.2.4 运行结果 268
7.2.5 实例分析 269
7.3 公司员工性别调查 269
视频教学：10分钟 269
7.3.1 基础知识——lambda表达式 269
7.3.2 实例描述 270
7.3.3 实例应用 270
7.3.4 运行结果 272
7.3.5 实例分析 272
7.4 获取建材信息 272
视频教学：11分钟 272
7.4.1 基础知识——Struts 2对OGNL表达式的增强 273
7.4.2 实例描述 276
7.4.3 实例应用 276
7.4.4 运行结果 279
7.4.5 实例分析 279
7.5 常见问题解答 280
7.5.1 OGNL运算问题 280
7.5.2 OGNL调用方法：#session. cart.showcart()访问不到 280
7.5.3 后台报错：Caught OgnlException while setting property 'operate Result' on type怎么回事 281
7.5.4 JSP脚本在Struts 2中利用OGNL和标签如何表示 282
7.6 习题 282
第8章 Struts 2的标签库 285
8.1 演员年龄的排序 286
视频教学：33分钟 286
8.1.1 基础知识——控制标签 286
8.1.2 实例描述 292
8.1.3 实例应用 292
8.1.4 运行结果 294
8.1.5 实例分析 295
8.2 显示学员信息 295
视频教学：54分钟 295
8.2.1 基础知识——数据标签 295
8.2.2 实例描述 305
8.2.3 实例应用 305
8.2.4 运行结果 306
8.2.5 实例分析 306
8.3 主题和模板 307
视频教学：13分钟 307
8.3.1 基础知识——主题和模板 307
8.3.2 基础知识——Struts 2内置的四种主题 309
8.4 个人信息表单 310
视频教学：89分钟 310
8.4.1 基础知识——表单标签 310
8.4.2 实例描述 326
8.4.3 实例应用 326
8.4.4 运行结果 328
8.4.5 实例分析 329
8.5 选择自己喜欢的节日 329
视频教学：11分钟 329
8.5.1 基础知识——非表单标签 329
8.5.2 实例描述 331
8.5.3 实例应用 331
8.5.4 运行结果 333
8.5.5 实例分析 333
8.6 常见问题解答 334
8.6.1 Struts 2一遇到标签就出错 334
8.6.2 Struts标签库导入错误 334
8.6.3 iterator标签如何循环遍历某一实体下的set集合数据 335
8.6.4 使用Struts 2的bean标签出错 336
8.6.5 Struts 2的验证框架，用的是哪个标签返回错误信息 336
8.6.6 <s:iterator>标签循环遍历list无法取出类型为类的属性提示ognl.NoConversionossible错误 337
8.6.7 Struts 2在iterator中嵌套radio时，radio标签该怎么写 338
8.7 习题 339
第9章 轻松实现文件上传和下载 341
9.1 文件上传的原理 342
视频教学：6分钟 342
9.2 Struts 2中的文件上传 346
视频教学：11分钟 347
9.2.1 基础知识——Struts 2对文件上传的支持 347
9.2.2 实例描述 347
9.2.3 实例应用 348
9.2.4 运行结果 351
9.2.5 实例分析 351
9.3 上传文件过滤 351
视频教学：11分钟 351
9.3.1 基础知识——对文件上传进行更多的控制 352
9.3.2 实例描述 353
9.3.3 实例应用 353
9.3.4 运行结果 354
9.3.5 实例分析 355
9.4 同时上传多个文件 355
视频教学：13分钟 355
9.4.1 基础知识——同时上传多个文件 355
9.4.2 实例描述 356
9.4.3 实例应用 356
9.4.4 运行结果 359
9.4.5 实例分析 359
9.5 文件下载 360
视频教学：6分钟 360
9.5.1 基础知识——Struts 2对文件下载的支持 360
9.5.2 实例描述 362
9.5.3 实例应用 362
9.5.4 运行结果 363
9.5.5 实例分析 364
9.6 常见问题解答 364
9.6.1 Struts 2上传文件大小问题 364
9.6.2 Struts 2中，上传文件过大时，JSP页面也不显示错误 365
9.6.3 Struts 2上传文件后保存到我的项目文件夹中却是一个tmp文件 366
9.6.4 Struts 2上传中文文件名文件下载后编程乱码 367
9.7 习题 367
第10章 避免表单重复提交和等待页面 371
10.1 避免表单重复提交 372
视频教学：25分钟 372
10.1.1 基础知识——token标签的作用 372
10.1.2 基础知识——使用TokenInterceptor 373
10.1.3 基础知识——使用TokenSession StoreInterceptor 373
10.1.4 实例描述 374
10.1.5 实例应用 374
10.1.6 运行结果 375
10.1.7 实例分析 376
10.2 设置等待页面 376
视频教学：11分钟 376
10.2.1 基础知识——使用ExecuteAndWaitInterceptor 377
10.2.2 实例描述 377
10.2.3 实例应用 378
10.2.4 运行结果 379
10.2.5 实例分析 380
10.3 常见问题解答 380
10.4 习题 381
第11章 黄金搭档——Struts 2集成Spring与Hibernate 383
11.1 用户注册与登录 384
视频教学：13分钟 384
11.1.1 基础知识——集成Hibernate 384
11.1.2 实例描述 391
11.1.3 实例应用 391
11.1.4 运行结果 396
11.1.5 实例分析 397
11.2 添加用户 397
视频教学：18分钟 398
11.2.1 基础知识——集成Spring 398
11.2.2 实例描述 403
11.2.3 实例应用 403
11.2.4 运行结果 410
11.2.5 实例分析 411
11.3 常见问题解答 411
11.3.1 Struts 2+Hibernate+Spring整合错误严重：Exception starting filter struts 2 411
11.3.2 出现java.lang.NoClassDef FoundError问题 412
11.3.3 org.hibernate-id.Identifier GenerationException异常问题 412
11.4 习题 413
第12章 整合JFreeChart 415
12.1 初始JFreeChart 416
视频教学：5分钟 416
12.1.1 基础知识——初始JFreeChart 416
12.1.2 实例描述 418
12.1.3 实例应用 418
12.1.4 运行结果 420
12.1.5 实例分析 421
12.2 JFreeChart统计图表——柱状图 421
视频教学：6分钟 421
12.2.1 基础知识——使用JFreeChart生成柱状图 421
12.2.2 实例描述 423
12.2.3 实例应用 423
12.2.4 运行结果 425
12.2.5 实例分析 425
12.3 JFreeChart统计图表——折线图 426
视频教学：6分钟 426
12.3.1 基础知识——使用JFreeChart生成折线图 426
12.3.2 实例描述 427
12.3.3 实例应用 427
12.3.4 运行结果 430
12.3.5 实例分析 431
12.4 JFreeChart统计图表——时间顺序图 431
视频教学：6分钟 431
12.4.1 基础知识——使用JFreeChart
生成时间顺序图 431
12.4.2 实例描述 432
12.4.3 实例应用 432
12.4.4 运行结果 434
12.4.5 实例分析 434
12.5 在网页中生成带交互功能的统计图 435
视频教学：6分钟 435
12.5.1 基础知识——在网页中生成带交互功能的统计图 435
12.5.2 实例描述 436
12.5.3 实例应用 437
12.5.4 运行结果 440
12.5.5 实例分析 441
12.6 在Struts 2应用中使用JFreeChart 441视频教学：6分钟 441
12.6.1 基础知识——在Struts 2应用中使用JFreeChart 441
12.6.2 实例描述 444
12.6.3 实例应用 444
12.6.4 运行结果 446
12.6.5 实例分析 446
12.7 常见问题解答 447
12.7.1 JFreeChart中文乱码问题 447
12.7.2 在unix操作系统下使用JFreeChart问题 447
12.7.3 使用JFreeChart生成统计图出现UnsatisfiedLinkError错误 447
12.7.4 每次生成JFreeChart统计图都会抛出异常 448
12.7.5 JFreeChart生成的统计图时间轴中时间的显示格式问题 448
12.8 习题 449
第13章 当Struts 2碰见Ajax 451
13.1 用户注册校验 452
视频教学：7分钟 452
13.1.1 基础知识——基于Ajax的输入校验 452
13.1.2 实例描述 455
13.1.3 实例应用 455
13.1.4 运行结果 458
13.1.5 实例分析 459
13.2 JSON串传递顾客信息数据 459
视频教学：27分钟 459
13.2.1 基础知识——使用JSON串作为数据的载体 459
13.2.2 实例描述 463
13.2.3 实例应用 463
13.2.4 运行结果 466
13.2.5 实例分析 466
13.3 Dojo异步获取用户信息 467
视频教学：8分钟 467
13.3.1 基础知识——结合Dojo简化Ajax应用的开发 467
13.3.2 实例描述 471
13.3.3 实例应用 471
13.3.4 运行结果 472
13.3.5 实例分析 473
13.4 Ajax的异步请求来获取服务端数据 473
视频教学：56分钟 473
13.4.1 基础知识——Struts 2的Ajax标签 473
13.4.2 实例描述 484
13.4.3 实例应用 484
13.4.4 运行结果 487
13.4.5 实例分析 488
13.5 常见问题解答 488
13.5.1 Ajax获取Struts 2的Action的返回信息问题 488
13.5.2 Struts 2中使用Ajax标签出错问题 489
13.5.3 Struts 2怎样获取Ajax post请求传递的数据？ 490
13.6 习题 490
第14章 太极研修院企业网站 493
14.1 太极研修院企业网站简介 494
14.1.1 系统功能 494
14.1.2 系统架构 499
14.2 数据库设计和实现 500
14.3 后台模块——新闻中心 504
14.3.1 查询新闻信息，分页显示 504
14.3.2 添加新闻信息 516
14.3.3 修改新闻信息 518
14.4 前台展示——新闻中心 522
14.4.1 获取二级栏目的新闻信息 522
14.4.2 获取特定的新闻信息 524
14.5 后台模块——太极商城 525
14.5.1 查询商品信息，分页显示 525
14.5.2 添加商品信息 529
14.5.3 删除商品信息 531
14.6 前台展示——太极商城 532
14.6.1 获取二级栏目的商品信息 532
14.6.2 获取特定的商品信息 534
14.7 后台模块——信息管理 536
14.7.1 信息管理 537
14.7.2 友情链接 544
14.8 前台展示——在线视频 545
14.8.1 获取视频列表信息 545
14.8.2 获取特定的视频信息 547
14.9 前台展示——友情链接 548
14.10 总结 549
第15章 人力资源管理系统 551
15.1 系统分析 552
15.1.1 系统需求分析 552
15.1.2 系统可行性分析 552
15.2 系统设计 553
15.2.1 总体设计 553
15.2.2 数据库设计 554
15.3 系统运行和开发环境的搭建 557
15.3.1 web.xml配置文件 558
15.3.2 struts.xml配置文件 558
15.3.3 hibernate.cfg.xml配置文件 560
15.3.4 applicationContext.xml配置文件 560
15.4 系统的实现 562
15.4.1 管理员模块——代码开发步骤 562
15.4.2 员工管理模块——jQuery框架的使用 577
15.4.3 应聘管理模块 583
15.4.4 奖惩管理模块 587
15.4.5 培训管理模块 590
15.4.6 薪资管理模块 594
15.5 总结 598
附录 参考答案 599