第一部分 Struts框架 2
第1章 Struts简介 2
1.1 Web应用开发简史 2
1.2 两种开发模型 3
1.2.1 模型1体系结构概述 3
1.2.2 模型2体系结构概述 3
1.3 深入MVC体系结构 4
1.3.1 模型组件 4
1.3.2 视图组件 4
1.3.3 控制器组件 5
1.4 进入Struts 5
1.4.1 Struts的演变 5
1.4.2 Struts是开源 6
1.5 Struts的基本组件 6
1.5.1 基本框架 6
1.5.2 JSP标签库 7
1.5.3 Tiles插件 7
1.5.4 Validator插件 7
1.6 获取Struts 7
1.6.1 获取二进制版本 8
1.6.2 获取源代码版本 8
1.7 开始Struts的旅程 8
第2章 建立一个简单的Struts应用 9
2.1 应用概览 9
2.1.1 Mini HR应用的文件 9
2.1.2 index.jsp 10
2.1.3 search.jsp 11
2.1.4 SearchForm.java 16
2.1.5 SearchAction.java 19
2.1.6 EmployeeSearchService.java 20
2.1.7 Employee.java 22
2.1.8 web.xml 22
2.1.9 struts-config.xml 24
2.1.10 MessageResources.properties 26
2.2 编译、打包与运行应用 26
2.2.1 下载、安装Struts与Tomcat 26
2.2.2 编译应用 27
2.2.3 打包应用 28
2.2.4 运行应用 29
2.3 理解执行流程 30
第3章 模型层 32
3.1 什么是模型 32
3.1.1 模型层划分 32
3.2 Struts与模型 32
3.2.1 利用BeanUtils传输数据到模型类 33
3.3 Mini HR应用模型层回顾 34
第4章 视图层 37
4.1 Struts与视图层 37
4.1.1 JSP页面 37
4.1.2 Form Bean 38
4.1.3 JSP标签库 45
4.1.4 资源包 46
4.2 Mini HR应用视图层回顾 47
4.3 其他视图技术 51
第5章 控制器层 52
5.1 Struts与控制器层 52
5.2 ActionServlet类 52
5.3 请求处理引擎 54
5.3.1 基于Jakarta Commons Chain的请求处理 54
5.3.2 基于RequestProcessor类的处理 55
5.4 Action类 56
5.4.1 从Form Bean取回值 57
5.4.2 定制action的应答 58
5.4.3 Struts的内建action 58
5.5 ActionForward类 67
5.6 Mini HR应用控制器层回顾 69
第6章 Validator 70
6.1 Validator概述 70
6.2 使用Validator 71
6.2.1 启用Validator插件 71
6.2.2 创建Form Bean 71
6.2.3 配置validator-rules.xml 74
6.2.4 配置应用资源包文件 75
6.2.5 配制validation.xml 76
6.2.6 使用Validator的包含验证 80
6.2.7 启用客户端验证 91
6.3 创建定制验证 93
6.3.1 创建验证方法 93
6.3.2 添加新的验证规则 95
6.3.3 添加新的验证定义 96
6.3.4 将消息添加到MessageResources.properties文件 97
6.4 国际化验证 97
6.5 添加Validator到Mini HR应用 99
6.5.1 修改SearchForm,以扩展ValidatorForm 99
6.5.2 创建validation.xml文件 100
6.5.3 在struts-config.xml文件中添加Validator插件 100
6.5.4 将验证错误消息添加到MessageResources.properties文件 101
6.5.5 编译、打包并运行更新后的应用 102
第7章 Tiles 103
7.1 Tiles概述 104
7.2 使用Tiles 104
7.2.1 启用Tiles插件 105
7.2.2 创建Tiles定义 105
7.2.3 创建布局JSP并使用Tiles标签库 108
7.2.4 创建内容JSP 109
7.2.5 使用Tiles定义 109
7.2.6 用Tiles处理相对URL 110
7.3 国际化Tiles 110
7.4 使用Tiles标签库 112
7.5 Tiles标签库标签 113
7.5.1 add标签 114
7.5.2 definition标签 115
7.5.3 getAsString标签 115
7.5.4 importAttribute标签 115
7.5.5 initComponentDefinitions标签 116
7.5.6 insert标签 116
7.5.7 put标签 117
7.5.8 putList标签 118
7.5.9 useAttribute标签 119
7.6 添加Tiles到Mini HR应用 119
7.6.1 创建布局JSP 120
7.6.2 更新现有JSP,使其满足布局的要求 122
7.6.3 创建tiles-defs.xml Tiles配置文件 123
7.6.4 更新struts-config.xml Struts配置文件 124
7.6.5 编译、打包并运行更新后的应用 125
第8章 声明性异常处理 126
8.1 配置Struts的异常处理器 126
8.1.1 提交应答的异常处理 127
8.2 创建定制异常处理器 128
8.2.1 创建一个新的异常处理器类 128
8.2.2 添加新的异常处理器定义到应用的Struts配置文件 130
8.3 添加声明性异常处理到Mini HR应用 130
8.3.1 创建一个应用异常类 130
8.3.2 更新SearchAction,抛出一个应用异常 130
8.3.3 在struts-config.xml配置文件中设置一个异常处理器 131
8.3.4 创建一个异常处理器JSP 133
8.3.5 将异常错误消息添加到MessageResources.properties文件 133
8.3.6 重编译、重打包并运行更新后的应用 134
第9章 Struts模块 135
9.1 使用模块 135
9.1.1 为每个模块创建一个Struts配置文件 136
9.1.2 为模块配置web.xml部署描述器 136
9.1.3 配置到指定模块JSP的链接 137
9.2 在模块中使用Validator 138
9.3 在模块中使用Tiles 138
9.4 将Mini HR应用转换成使用模块 139
9.4.1 设置模块目录和文件 139
9.4.2 为每个模块创建一个Struts配置文件 140
9.4.3 更新应用的web.xml部署描述器文件 142
9.4.4 更新index.jsp文件,链接到每个模块 143
9.4.5 重打包并运行更新后的应用 143
第二部分 应用Struts 146
第10章 国际化Struts应用 146
10.1 理解Java的国际化支持 146
10.1.1 java.util.Locale类 146
10.1.2 java.util.ResourceBundle类 147
10.1.3 java.text.MessageFormat类 148
10.2 理解Struts的国际化支持 148
10.2.1 Locale 149
10.2.2 消息资源 149
10.2.3 Struts支持国际化的标签库 150
10.3 国际化Mini HR应用 151
10.3.1 为所有的应用文本添加到MessageResources.properties的入口 151
10.3.2 创建MessageResources.properties文件的西班牙语版本 152
10.3.3 更新JSP,从MessageResources.properties文件取得所有的应用文本 153
10.3.4 编译、打包并运行更新后的应用 154
第11章 保护Struts应用 157
11.1 安全级别 157
11.1.1 提供安全通信 157
11.1.2 认证与授权 157
11.1.3 基于角色的访问控制 158
11.1.4 容器管理的安全与应用管理的安全 158
11.2 使用容器管理的安全 159
11.2.1 登录配置 160
11.2.2 容器管理的安全传输 163
11.3 应用管理的安全 164
11.3.1 创建安全服务 164
11.3.2 Struts与SSL集成 173
第12章 测试Struts应用 176
12.1 测试类型 176
12.1.1 单元测试 176
12.1.2 功能测试 176
12.1.3 系统测试 176
12.2 单元测试Struts应用 177
12.2.1 测试模型 177
12.2.2 测试控制器行为 180
12.2.3 测试视图 187
12.3 用例驱动的测试 188
12.3.1 创建测试用例 189
12.3.2 使用Canoo WebTest 190
12.4 测试应用性能 193
第三部分 Struts标签库第13章 HTML标签库 198
13.1 理解JSP页面中的变量和范围 198
13.2 使用HTML标签库 199
13.3 HTML标签库标签 199
13.3.1 base标签 201
13.3.2 button标签 201
13.3.3 cancel标签 202
13.3.4 checkbox标签 203
13.3.5 errors标签 205
13.3.6 file标签 205
13.3.7 form标签 207
13.3.8 frame标签 208
13.3.9 hidden标签 210
13.3.10 html标签 211
13.3.11 image标签 211
13.3.12 img标签 213
13.3.13 javascript标签 215
13.3.14 link标签 216
13.3.15 messages标签 218
13.3.16 multibox标签 219
13.3.17 option标签 220
13.3.18 options标签 221
13.3.19 optionsCollection标签 222
13.3.20 password标签 222
13.3.21 radio标签 224
13.3.22 reset标签 225
13.3.23 rewrite标签 226
13.3.24 select标签 228
13.3.25 submit标签 229
13.3.26 text标签 230
13.3.27 textarea标签 231
13.3.28 xhtml标签 233
13.4 共同的标签属性 233
第14章 Bean标签库 235
14.1 理解JSP中的变量和范围 235
14.2 使用Bean标签库 236
14.3 Bean标签库标签 236
14.3.1 cookie标签 237
14.3.2 define标签 238
14.3.3 header标签 239
14.3.4 include标签 240
14.3.5 message标签 241
14.3.6 page标签 243
14.3.7 parameter标签 243
14.3.8 resource标签 244
14.3.9 size标签 245
14.3.10 struts标签 247
14.3.11 write标签 248
第15章 Logic标签库 250
15.1 理解JSP中的变量和范围 250
15.2 使用Logic标签库 251
15.3 Logic标签库标签 251
15.3.1 empty标签 252
15.3.2 equal标签 253
15.3.3 forward标签 254
15.3.4 greaterEqual标签 255
15.3.5 greaterThan标签 256
15.3.6 iterate标签 258
15.3.7 lessEqual标签 259
15.3.8 lessThan标签 261
15.3.9 match标签 262
15.3.10 messagesNotPresent标签 264
15.3.11 messagesPresent标签 265
15.3.12 notEmpty标签 265
15.3.13 notEqual标签 266
15.3.14 notMatch标签 267
15.3.15 notPresent标签 269
15.3.16 present标签 271
15.3.17 redirect标签 273
第16章 Nested标签库 275
16.1 理解Struts的对象嵌套 275
16.2 使用Nested标签库 276
16.3 Nested标签库标签 276
16.3.1 nest标签 278
16.3.2 root标签 278
16.3.3 writeNesting标签 279
第17章 Struts与JSTL 280
17.1 JSTL概览 280
17.1.1 JSTL表达式语言 280
17.1.2 JSTL标签库 282
17.2 JSTL与Struts 284
17.2.1 Struts EL 284
17.2.2 JSTL替换举例 285
17.2.3 使用Struts EL标签库 288
17.2.4 Struts EL标签库标签 289
第四部分 Struts的配置文件第18章 Struts配置文件 292
18.1 理解XML DTD 292
18.2 配置web.xml部署描述器 292
18.3 Struts配置文件标签 294
18.3.1 action标签 294
18.3.2 action-mappings标签 296
18.3.3 controller标签 296
18.3.4 exception标签 297
18.3.5 form-bean标签 298
18.3.6 form-beans标签 299
18.3.7 form-property标签 300
18.3.8 forward标签 301
18.3.9 global-exceptions标签 302
18.3.10 global-forwards标签 302
18.3.11 message-resources标签 302
18.3.12 plug-in标签 303
18.3.13 set-property标签 304
18.3.14 struts-config标签 304
18.4 metadata标签 305
18.5 用Struts Console编辑Struts配置文件 305
第19章 Tiles配置文件 307
19.1 理解XML DTD 307
19.2 启用Tiles插件 307
19.3 Tiles配置文件标签 309
19.3.1 add标签 309
19.3.2 bean标签 309
19.3.3 definition标签 310
19.3.4 item标签 310
19.3.5 put标签 311
19.3.6 putList标签 312
19.3.7 set-property标签 312
19.3.8 tiles-definitions标签 313
19.4 metadata标签 313
19.5 用Struts Console编辑Tiles配置文件 314
第20章 Validator配置文件 315
20.1 两个配置文件 315
20.2 理解XML DTD 315
20.3 启用Validator插件 316
20.4 Validator配置文件标签 316
20.4.1 arg标签 317
20.4.2 constant标签 318
20.4.3 constant-name标签 318
20.4.4 constant-value标签 319
20.4.5 field标签 319
20.4.6 form标签 320
20.4.7 form-validation标签 320
20.4.8 formset标签 321
20.4.9 global标签 322
20.4.10 javascript标签 322
20.4.11 msg标签 323
20.4.12 validator标签 324
20.4.13 var标签 325
20.4.14 var-jstype标签 325
20.4.15 var-name标签 326
20.4.16 var-value标签 326
20.5 用Struts Console编辑Validator配置文件 326
第五部分 Struts扩展 330
第21章 Struts Scripting 330
21.1 BSF概览 330
21.2 Struts Scripting概览 330
21.3 使用Struts Scripting 331
21.3.1 在应用中添加Struts Scripting.jar文件和属性文件 331
21.3.2 创建基于脚本的action 332
21.3.3 在应用的Struts配置文件中配置基于脚本的action 332
21.3.4 预定义的脚本编写变量 333
21.4 在Mini HR应用中使用Struts Scripting 335
21.4.1 在应用中添加Struts Scripting.jar文件和属性文件 335
21.4.2 将SearchAction转换成Groovy脚本 336
21.4.3 配置struts-config.xml文件 336
21.4.4 编译、打包并运行更新后的应用 337
第22章 Struts-Faces集成库 339
22.1 JSF概览 339
22.2 Struts-Faces库概览 339
22.2.1 支持的Struts版本 340
22.2.2 支持的JSF版本 340
22.3 使用Struts-Faces库 340
22.3.1 在应用中添加必要的.jar文件 340
22.3.2 将JSF控制器servlet的定义添加到web.xml文件 340
22.3.3 将Struts配置成使用定制的Struts-Faces请求处理器 341
22.3.4 使用Struts-Faces和JSF标签库标签创建基于JSF的用户界面 341
22.3.5 在应用的Struts配置文件中配置forward和action定义 342
22.3.6 已知的限制 342
22.4 Struts-Faces标签库标签 343
22.4.1 base标签 344
22.4.2 commandLink标签 344
22.4.3 errors标签 346
22.4.4 form标签 346
22.4.5 html标签 347
22.4.6 javascript标签 348
22.4.7 loadMessages标签 349
22.4.8 message标签 350
22.4.9 stylesheet标签 351
22.4.10 write标签 352
22.5 在Mini HR应用中使用Struts-Faces标签 352
22.5.1 在应用中添加JSF实现的.jar文件和JSTL.jar文件 352
22.5.2 将JSF控制器servlet的定义添加到web.xml文件 353
22.5.3 配置struts-config.xml文件 354
22.5.4 将现有的JSP更新成使用Struts-Faces和JSF标签库标签 355
22.5.5 编译、打包并运行更新后的应用 357
第23章 Struts与AJAX 358
23.1 AJAX概览 358
23.2 在Mini HR应用中集成AJAX 358
23.2.1 在EmployeeSearchService类中添加getEmployeeCount()方法 359
23.2.2 创建一个CountAction类 360
23.2.3 在struts-config.xml文件中配置CountAction类 361
23.2.4 将search.jsp更新成使用AJAX 361
23.2.5 重编译、重打包并运行更新后的应用 364
第六部分 附录 368
附录A Struts Console快速参考 368
附录B 第三方Struts扩展 381