目 录
第1章 Struts 2 概述 1
1.1 MVC思想概述 2
1.1.1 传统的Model 1和Model 2 2
1.1.2 MVC思想及特点 3
1.1.3 常见MVC技术 3
1.2 Struts 1概述 3
1.3 Struts 2概述 5
1.3.1 Struts 2的优势 6
1.3.2 Struts 2的体系结构 8
1.3.3 Struts 2的配置文件 9
1.3.4 Struts 2的标签库 10
1.3.5 Struts 2的控制器 11
1.4 Struts 2的下载和安装 12
1.5 上机实训 14
1.6 本章习题 14
第2章 Struts 2 入门 17
2.1 HelloWorld应用介绍 18
2.2 创建Struts 2的Web应用 18
2.2.1 创建Web应用 18
2.2.2 用户请求页面 19
2.2.3 控制器实现 21
2.2.4 配置Action 22
2.2.5 完成应用 23
2.3 Struts 2的Action 25
2.3.1 实现Action接口 25
2.3.2 Action访问ActionContext 28
2.3.3 继承ActionSupport类 30
2.4 上机实训 35
2.5 本章习题 35
第3章 Struts 2的核心技术 37
3.1 Struts 2的执行流程和原理 38
3.2 Action的驱动模式 45
3.2.1 属性驱动模式 46
3.2.2 模型驱动模式 48
3.3 上机实训 49
3.4 本章习题 50
第4章 Struts 2的配置方式(1) 51
4.1 web.xml文件的配置 52
4.2 struts.xml文件的配置 54
4.2.1 bean的配置 54
4.2.2 package的配置 56
4.2.3 namespace的配置 57
4.2.4 constant的配置 58
4.2.5 interceptor的配置 58
4.2.6 include的配置 61
4.2.7 action的配置 61
4.2.8 result的配置 65
4.2.9 exception的配置 67
4.3 Result Types的配置 69
4.3.1 Chain Result的配置 70
4.3.2 Dispatcher Result的配置 71
4.3.3 FreeMarker Result的配置 72
4.3.4 HttpHeader Result的配置 72
4.3.5 Redirect Result的配置 73
4.3.6 Stream Result的配置 73
4.3.7 Velocity Result的配置 75
4.3.8 Xslt Result的配置 75
4.3.9 PlainText Result的配置 77
4.3.10 JSON Result的配置 77
4.3.11 全局结果 81
4.3.12 动态结果映射 82
4.4 上机实训 83
4.5 本章习题 83
第5章 Struts 2的配置方式(2) 85
5.1 Annotations的配置 86
5.1.1 Namespace的配置 88
5.1.2 ParentPackage的配置 88
5.1.3 Action的配置 90
5.1.4 Actions的配置 91
5.1.5 InterceptorRefs的配置 92
5.1.6 Result的配置 93
5.1.7 Results的配置 93
5.1.8 ResultPath的配置 94
5.1.9 ExceptionMapping的配置 94
5.1.10 ExceptionMappings的配置 95
5.2 Validation Annotations的配置 95
5.2.1 ConversionErrorFieldValidator
的配置 96
5.2.2 DateRangeFieldValidator
的配置 98
5.2.3 DoubleRangeFieldValidator
的配置 101
5.2.4 EmailValidator的配置 102
5.2.5 ExpressionValidator的配置 103
5.2.6 IntRangeFieldValidator
的配置 104
5.2.7 RegexFieldValidator的配置 105
5.2.8 RequiredFieldValidator
的配置 106
5.2.9 RequiredStringValidator
的配置 107
5.2.10 StringLengthFieldValidator
的配置 108
5.2.11 UrlValidator的配置 109
5.2.12 Validation的配置 110
5.2.13 Validations的配置 110
5.2.14 VisitorFieldValidator的配置 112
5.2.15 CustomValidator的配置 114
5.3 struts.properties的配置 115
5.4 struts-plugin.xml的配置 116
5.5 各种配置文件的加载顺序 116
5.6 上机实训 116
5.7 本章习题 117
第6章 Struts 2的类型转换 119
6.1 Struts 2类型转换器 120
6.1.1 Struts 2内置的类型转换器 120
6.1.2 自定义转换器 120
6.2 批量类型转换 126
6.3 上机实训 129
6.4 本章习题 130
第7章 Struts 2的拦截器 131
7.1 理解拦截器 132
7.1.1 理解DRY规则 132
7.1.2 拦截器的原理 132
7.1.3 Struts 2内建的拦截器 134
7.1.4 struts-default.xml里配置的
拦截器 136
7.2 拦截器的配置 140
7.2.1 配置拦截器 140
7.2.2 拦截器的使用 141
7.2.3 配置默认的拦截器 142
7.3 自定义拦截器 144
7.3.1 实现拦截器类 144
7.3.2 使用拦截器 145
7.3.3 拦截方法的拦截器 146
7.4 拦截器示例 148
7.5 用Annotation配置拦截器 155
7.6 上机实训 156
7.7 本章习题 157
第8章 Struts 2 OGNL的应用 159
8.1 OGNL概述 160
8.2 OGNL语法基础 160
8.2.1 OGNL表达式 160
8.2.2 常量 161
8.2.3 操作符 161
8.2.4 访问JavaBean中的属性 161
8.2.5 索引访问 162
8.3 OGNL的使用 165
8.4 Struts 2中的OGNL 169
8.5 上机实训 170
8.6 本章习题 171
第9章 Struts 2的标签(1) 173
9.1 Struts 2标签的引入 174
9.2 通用标签 176
9.2.1 流程控制标签 176
9.2.2 数据标签 190
9.3 UI标签 205
9.3.1 表单标签 205
9.3.2 非表单标签 225
9.4 上机实训 229
9.5 本章习题 229
第10章 Struts 2的标签(2) 231
10.1 Ajax标签 232
10.1.1 a标签 232
10.1.2 autocompleter标签 235
10.1.3 bind标签 238
10.1.4 datetimepicker标签 241
10.1.5 div标签 243
10.1.6 head标签 246
10.1.7 submit标签 248
10.1.8 tabbedPanel标签 251
10.1.9 textarea标签 254
10.1.10 tree/treenode标签 255
10.2 Struts 2主题和模板 259
10.3 上机实训 261
10.4 本章习题 262
第11章 Struts 2的校验 263
11.1 校验基础 264
11.2 服务器端的校验配置 270
11.3 客户端校验配置 280
11.4 Ajax校验配置 284
11.5 上机实训 286
11.6 本章习题 287
第12章 Struts 2的国际化 289
12.1 常见国际化示例 290
12.2 页面内容的国际化 292
12.3 错误信息国际化 298
12.4 格式化输出日期和数值 300
12.5 资源文件的加载方式和流程 303
12.6 上机实训 306
12.7 本章习题 306
第13章 Struts 2上传下载和其他
技术 307
13.1 Token防止表单重复提交 308
13.1.1 TokenInterceptor的使用 308
13.1.2 TokenSessionStoreInterceptor
的使用 313
13.2 Struts 2文件的上传和下载 316
13.2.1 Struts 2文件的上传 316
13.2.2 Struts 2文件的下载 325
13.2.3 中文文件的下载 327
13.3 Struts 2中文乱码处理总结 332
13.4 页面跳转技巧 334
13.5 使用SiteMesh布局 334
13.5.1 SiteMesh简介 334
13.5.2 SiteMesh运行原理 335
13.5.3 SiteMesh实例 336
13.6 在Struts 2中使用FreeMarker 340
13.6.1 FreeMarker简介 340
13.6.2 FreeMarker快速上手 341
13.6.3 在Struts 2中使用
FreeMarker 342
13.7 上机实训 346
13.8 本章习题 347
第14章 S2SH技术整合 349
14.1 为什么要整合S2SH 350
14.2 Struts 2与Spring整合 351
14.3 Struts 2与Hibernate整合 356
14.4 Struts 2 + Spring + Hibernate整合 361
14.5 上机实训 366
14.6 本章习题 366
第15章 Struts 2留言板项目案例 367
15.1 系统概述 368
15.2 系统需求 368
15.2.1 前台留言板块 368
15.2.2 管理留言板块 369
15.3 系统功能描述 369
15.3.1 浏览留言 369
15.3.2 管理员后台操作 372
15.4 系统设计 374
15.4.1 系统架构设计 374
15.4.2 业务实体设计 374
15.4.3 业务逻辑设计 375
15.5 数据库设计 375
15.5.1 E-R图设计 375
15.5.2 物理建模 376
15.5.3 设计表格 376
15.5.4 数据表脚本 377
15.6 JDBC封装 378
15.6.1 公共接口封装 378
15.6.2 数据库连接类 386
15.6.3 Dao工厂类 388
15.7 功能模块实现 389
15.7.1 控制器Action的实现 389
15.7.2 业务逻辑层的实现 396
15.7.3 struts.xml文件的配置 397
15.8 运行工程 397
15.8.1 使用工具 397
15.8.2 工程部署 397
15.8.3 运行程序 398
15.9 上机实训 400
15.10 本章习题 400
附录1 部分属性设置说明 401
附录2 Struts 2程序开发实用教程
习题答案 405