第1章 Struts 2概述 2
1.1 MVC介绍 3
1.1.1 Web技术发展 4
1.1.2 MVC设计模式 6
1.1.3 MVC的处理过程 7
1.1.4 MVC的优点 8
1.1.5 MVC的适用范围 8
1.1.6 Model 1和Model 2体系介绍 9
1.2 Struts 1简介 10
1.2.1 Struts 1框架介绍 10
1.2.2 web.xml配置文件 11
1.2.3 struts-config.xml配置文件 12
1.2.4 Action和ActionForm 12
1.2.5 Struts 1处理过程 13
1.2.6 Struts 1的优点 14
1.2.7 Struts 1的缺点 14
1.3 WebWork简介 15
1.3.1 WebWork框架 15
1.3.2 WebWork的特性 18
1.4 Struts 2概述 18
1.4.1 Struts 2框架 19
1.4.2 Struts 2配置文件 20
1.4.3 Struts 2控制器 24
1.4.4 Struts 2标签库 26
1.4.5 Struts 2与Struts 1比较 28
1.4.6 Struts 2与WebWork比较 29
1.5为什么使用Struts 2 30
1.6本章小结 30
第2章 Struts2的HelloWorld 32
2.1搭建Struts开发环境 33
2.1.1安装JDK 33
2.1.2安装Eclipse 35
2.1.3安装Tomcat 36
2.1.4安装Struts 2 37
2.1.5 Eclipse安装Struts 2 40
2.2一个简单的HelloWorld 43
2.2.1配置web.xml文件 43
2.2.2配置struts xml文件 44
2.2.3 Action业务控制器 45
2.2.4视图资源 46
2.2.5运行HelloWorld 48
2.2.6 HelloWorld小结 49
2.3 Struts 2特性演示 49
2.3.1基本实现 49
2.3.2标签库 54
2.3.3改进Action 56
2.3.4国际化 58
2.3.5数据校验:使用validate()方法校验 62
2.3.6数据校验:使用框架校验 64
2.4本章小结 66
第3章 Struts核心剖析 67
3.1 Struts 2工作流程 68
3.1.1核心控制器FilterDispatcher 68
3.1.2业务控制器Action 73
3.1.3业务模型组件 73
3.1.4视图组件 76
3.2 Struts 2配置文件 76
3.2.1配置web.xml文件 77
3.2.2配置struts.xml文件 81
3.2.3常量配置 89
3.2.4包配置 92
3.2.5命名空间配置 94
3.2.6包含配置 96
3.2.7 Bean配置 99
3.2.8拦截器配置 101
3.2.9配置struts.properties文件 103
3.2.10配置通配符 106
3.2.11 Struts 2的零配置 107
3.3 Struts 2的Action 109
3.3.1 Action实现类 109
3.3.2实例验证:Action属性和用户参数之间的关系 114
3.3.3 Action访问ActionContext 118
3.3.4值栈(ValueStack) 122
3.3.5 Action直接访问Servlet API 127
3.3.6 Action的配置 131
3.3.7 Action的动态方法调用 134
3.3.8通配符配置 139
3.4处理结果 145
3.4.1处理结果流程 145
3.4.2配置result 146
3.4.3 result的类型 147
3.4.4 action-chain类型示例 150
3.4.5 Freemarker类型示例 155
3.4.6 redirect类型示例 155
3.4.7 redirect-action类型示例 156
3.4.8 Stream类型示例 157
3.4.9使用通配符动态配置result 158
3.4.10使用OGNL动态配置 result 161
3.5模型驱动 164
3.5.1模型驱动的意义 164
3.5.2模型驱动示例 167
3.6异常处理 172
3.6.1 Java的异常处理 172
3.6.2 Struts 2框架的异常处理 175
3.6.3异常的配置 177
3.7如何提高Struts 2性能 181
3.8支持Struts 2框架的应用服务器 181
3.9本章小结 182
第4章 国际化 184
4.1 软件的国际化 185
4.2 Java的国际化支持 186
4.2.1使用资源文件 189
4.2.2使用资源类文件 191
4.2.3 MessageFormat类 193
4.3 Struts 2的国际化支持 197
4.3.1配置资源文件 197
4.3.2 Stuts 2国际化应用 199
4.3.3使用占位符 204
4.3.4包范围资源文件 208
4.3.5 Action范围资源文件 210
4.3.6临时资源文件 211
4.3.7加载资源文件的顺序 213
4.4动态访问国际化资源文件 214
4.4.1动态访问国际化资源文件原理 214
4.4.2建立资源文件和配置文件 215
4.4.3建立Action和JSP 216
4.4.4动态访问资源文件示例 217
4.4.5 Eclipse编写资源文件的插件 218
4.6本章小结 218
第5章 Struts2进阶——拦截器 219
5.1拦截器介绍 220
5.1.1 AOP介绍 220
5.1.2拦截的实现原理 223
5.1.3拦截的意义 225
5.2 Struts 2拦截器 226
5.2.1 Struts 2拦截器原理 226
5.2.2 HelloWorld拦截器 228
5.2.3定义拦截器 231
5.2.4使用拦截器 234
5.2.5默认拦截器 235
5.3自定义拦截器 238
5.3.1自定义拦截器实现类 238
5.3.2使用自定义拦截器 240
5.4拦截器深度剖析 243
5.4.1拦截器的方法过滤 243
5.4.2拦截器的执行顺序 248
5.4.3拦截结果监听器 251
5.4.4设置拦截器栈中拦截器参数 254
5.4.5 Struts 2框架的系统拦截器 256
5.5拦截器应用示例 261
5.5.1权限拦截器 261
5.5.2配置拦截器 263
5.5.3业务控制器Action 265
5.5.4 JSP视图 266
5.5.5运行示例 267
5.6本章小结 268
第6章 Struts 2的类型转换 270
6.1类型转换 271
6.2编写一个类型转换器 274
6.2.1类型转换需求 274
6.2.2编写自定义类型转换器 276
6.2.3视图资源文件 277
6.2.4运行示例 278
6.3自定义类型转换器 278
6.3.1基于OGNL的类型转换器 278
6.3.2基于Struts 2的类型转换器 279
6.3.3注册自定义类型转换器 281
6.3.4数组属性类型转换器 284
6.3.5集合属性类型转换器 287
6.4使用Struts 2的类型转换 289
6.4.1 Struts 2系统内建的类型转换器 290
6.4.2项目应用中常见的类型转换 290
6.4.3使用OGNL表达式 292
6.4.4使用集合类型属性 294
6.4.5使用 Set类型属性 297
6.5类型转换中的异常处理 300
6.5.1类型转换异常拦截器 300
6.5.2一个简单的类型转换异常处理 301
6.5.3改进类型转换异常显示信息 303
6.5.4处理复合类型转换异常 304
6.6本章小结 305
第7章 输入校验 307
7.1输入校验介绍 308
7.1.1输入校验的原因 308
7.1.2使用JavaScript完成客户端校验 309
7.2使用validate方法进行输入校验 311
7.2.1 validate()方法输入校验 311
7.2.2 validateXxx()方法输入校验 316
7.2.3输入校验流程 318
7.3基于框架的输入校验 318
7.3.1使用字段校验的输入校验 319
7.3.2使用客户端的输入校验 321
7.3.3使用非字段校验的输入校验 324
7.3.4输入校验的国际化信息 326
7.3.5校验的搜索顺序 329
7.4 AJAX输入校验 333
7.4.1配置AJAX环境 334
7.4.2建立业务控制器 336
7.4.3建立校验规则文件 336
7.4.4建立JSP视图 337
7.4.5运行AJAX校验示例 338
7.5复合类型属性的输入校验 338
7.5.1复合属性的校验 339
7.5.2集合属性的校验 342
7.6 Struts 2框架的校验器 343
7.6.1内建校验器 343
7.6.2类型转换校验器 345
7.6.3日期校验器 345
7.6.4浮点数值校验器 346
7.6.5邮件地址校验器 346
7.6.6表达式校验器 347
7.6.7字段表达式校验器 347
7.6.8整数校验器 348
7.6.9正则表达式校验器 348
7.6.10必填校验器 349
7.6.11必填字符串校验器 349
7.6.12字符串长度校验器 350
7.6.13网址校验器 350
7.6.14 visitor校验器 351
7.7本章小结 351
第8章 OGNL 352
8.1 OGNL基础知识 353
8.1.1 OGNL的优势 353
8.1.2 OGNL语法 353
8.1.3一个使用OGNL的示例 354
8.2 Struts 2的OGNL 356
8.2.1 Struts 2的OGNL表达式 357
8.2.2 OGNL的集合操作 358
8.2.3 Lambda表达式 359
8.3 Struts 2中使用OGNL 360
8.3.1业务控制器 360
8.3.2 JSP视图 361
8.3.3运行示例 362
8.3.4 OGNL中的#、%和$符号 363
8.4本章小结 364
第9章 Struts 2标签库 365
9.1 Struts 2标签库概述 366
9.1.1标签库简介 366
9.1.2 Struts 2标签库组成 367
9.1.3 Struts 2标签库的使用 368
9.1.4 Struts 2同Struts 1标签库的比较 370
9.2控制标签 370
9.2.1 if/elseif/else标签 371
9.2.2 iterator标签 372
9.2.3 append标签 375
9.2.4 generator标签 377
9.2.5 merge标签 379
9.2.6 subset标签 381
9.2.7 sort标签 383
9.3数据标签 385
9.3.1 action标签 386
9.3.2 bean标签 388
9.3.3 date标签 390
9.3.4 debug标签 393
9.3.5 include标签 393
9.3.6 param标签 395
9.3.7 push标签 395
9.3.8 set标签 396
9.3.9 url标签 397
9.3.10 property标签 399
9.4主题与模板 399
9.4.1主题 399
9.4.2模板 400
9.5表单标签 401
9.5.1表单标签通用属性 401
9.5.2 checkbox标签 403
9.5.3 checkboxlist标签 404
9.5.4 combobox标签 406
9.5.5 doubleselect标签 407
9.5.6 datetimepicker标签 409
9.5.7 head标签 411
9.5.8 file标签 411
9.5.9 hidden标签 412
9.5.10 select标签 412
9.5.11 optiontransferselect标签 414
9.5.12 radio标签 415
9.5.13 optgroup标签 416
9.5.14 token标签 417
9.5.15 textarea标签 418
9.5.16 updownselct标签 419
9.5.17 password标签 420
9.5.18 textfield标签 420
9.6非表单标签 420
9.6.1 actionerror和actionmessage标签 421
9.6.2 component标签 422
9.6.3 tree和treenode标签 423
9.7本章小结 424
第10章 AJAX技术支持 425
10.1 AJAX介绍 426
10.1.1为什么使用AJAX 426
10.1.2 AJAX技术 427
10.1.3常见的浏览器端AJAX框架 429
10.1.4常见的服务器端AJAX框架 431
10.2 Struts 2的AJAX支持 432
10.2.1 ajax主题 433
10.2.2 AJAX输入校验 435
10.2.3 div标签 439
10.2.4 a标签 444
10.2.5 submit标签 446
10.2.6 autocompleter标签 448
10.2.7 tabbedPanel标签 452
10.2.8 AJAX表单 455
10.2.9 widgets 456
10.3本章小结 458
第11章 文件的上传与下载 459
11.1 Struts 2框架的文件上传 460
11.1.1 Common-fileUpload组件 460
11.1.2文件上传的JSP 461
11.1.3文件上传的Action 462
11.1.4配置文件和success视图 464
11.1.5运行文件上传示例 465
11.1.6上传文件的过滤 465
11.1.7文件上传的常量 467
11.2多个文件上传 468
11.2.1使用数组上传多个文件 468
11.2.2使用List上传多个文件 472
11.3 Struts 2控制文件下载 475
11.3.1在配置文件中指定下载资源 475
11.3.2在Action中指定下载资源 476
11.3.3文件下载的权限控制 478
11.4本章小结 480
第12章 使用FreeMarker技术 482
12.1 FreeMarker介绍 483
12.1.1 FreeMarker基础 483
12.1.2 FreeMarker简单示例 483
12.2 Struts 2中使用FreeMarker 485
12.2.1 FreeMarker使用Struts 2标签库 485
12.2.2 FreeMarker访问Servlet和JSP对象 487
12.2.3使用FreeMarker示例 488
12.3本章小结 490
第十三章 整合Spring 491
13.1 Spring介绍 492
13.1.1 IoC和DI 492
13.1.2 Spring优点 495
13.2 Struts 2整合Spring 495
13.2.1整合步骤 495
13.2.2整合原理 497
13.3整合开发示例 498
13.4本章小结 501
第14章 整合JSF 502
14.1 JSF介绍 503
14.1.1 JSF体系结构 503
14.1.2 JSF同Struts 2的比较 504
14.1.3 MyFaces 504
14.2 Struts 2整合MyFaces 505
14.2.1整合步骤 505
14.2.2整合原理 506
14.3整合MyFaces示例 508
14.3.1 JSP视图 508
14.3.2配置文件 511
14.3.3业务控制器Action 512
14.3.4运行示例 515
14.4本章小结 515
第15章 Struts 2访问MySQL数据库 516
15.1 MySQL下载和安装 517
15.1.1下载MySQL数据库 517
15.1.2安装MySQL数据库服务器 517
15.1.3安装MySQL数据库的JDBC驱动 519
15.2访问MySQL数据库示例 519
15.2.1创建一个数据库 519
15.2.2建立 JDBC连接 520
15.2.3使用Tomcat数据源 522
15.2.4建立一个数据库连接组件 524
15.3本章小结 525
第16章 整合Log4i 526
16.1 Log4j概述 527
16.2配置和使用Log4j 527
16.2.1一个简单的例子 527
16.2.2 Log4j的配置文件 530
16.2.3在代码中使用记录日志 533
16.3本章小结 533
第17章 整合ant 534
17.1概述 535
17.2安装运行 536
17.2.1 ant安装配置 536
17.2.2 HelloWorld实例 536
17.2.3 Web应用结构 537
17.2.4 ant运行命令 538
17.3 build.xml的基本结构 539
17.4 ant任务 541
17.4.1常用内置任务 541
17.4.2扩展可选任务 543
17.5完整的build.xml例子 544
17.6深入build.xml 546
17.6.1 project 546
17.6.2 target 547
17.6.3 task 547
17.6.4 properties 548
17.6.5 token filters 548
17.6.6 path-like structure 549
17.6.7命令行变量 550
17.6.8 references 550
17.7 Eclipse 3.x中使用ant 551
17.8 JBuilder 2005中使用ant 553
17.9本章小结 555
第18章 整合JUnit 556
18.1 JUnit概述 557
18.2 JUnit安装运行 557
18.2.1安装配置 557
18.2.2基本测试He1loWorld 557
18.2.3 JUnit的3种结果界面 558
18.3测试Struts 2应用 560
18.3.1 Struts 2测试概述 560
18.3.2创建测试类 560
18.4在Eclipse 3.x中执行测试 562
18.5在JBuilder 2005中执行测试 563
18.6本章小结 565
第19章 整合Hibernate 566
19.1 Hibernate简介 567
19.1.1 Hibernate Hello World应用 567
19.1.2理解Hibernate架构 571
19.1.3 Hibernate的核心接口 572
19.1.4 Hiebernate基本配置 573
19.1.5对象标识符号 575
19.1.6 Hibernate映射类型 575
19.1.7高级映射 576
19.1.8 Hibernate检索方式 580
19.2 Struts 2整合Hibernate 581
19.2.1下载安装Hibernate 581
19.2.2建立示例数据库表 581
19.2.3 hibernate.cfg.xml配置文件 582
19.2.4 Hibernate相关代码 582
19.2.5 DAO代码 584
19.2 6 Action代码 584
19.2.7相关视图 585
19.2.8运行示例 586
19.3本章小结 586
第20章 一个示例论坛应用 588
20.1项目需求与系统架构 589
20.1.1项目需求 589
20.1.2系统架构 589
20.2数据库设计 591
20.2.1数据模型 591
20.2.2建立数据库表 592
20.3建立开发环境 593
20.3.1配置 Tomcat数据源 593
20.3.2 web.xml配置文件 594
20.3.3 applicationContext.xml配置文件 595
20.3.4其他配置文件 596
20.4建立数据库连接组件 596
20.5建立业务实体对象 598
20.6建立数据库访问组件 600
20.7建立业务处理模块 608
20.7.1权限检查模块 608
20.7.2发表文章 模块 609
20.7.3文章 列表导航模块 612
20.7.4显示文章 内容模块 612
20.7.5用户登录模块 613
20.7.6用户注册模块 615
20.8建立业务控制器 615
20.8.1文章 处理业务控制器 615
20.8.2用户注册业务控制器 617
20.8.3用户登录业务控制器 619
20.9国际化和输入校验 620
20.9.1国际化 620
20.9.2输入校验规则文件 621
20.10建立视图 623
20.10.1论坛列表视图 623
20.10.2用户登录视图 625
20.10.3用户注册视图 625
20.10.4发表文章 视图 626
20.10.5显示文章 视图 627
20.11 Struts 2配置文件 627
20.12运行示例论坛 629
20.13本章小结 630