第1章 基本方法 1
第1章 基本方法 1
1.1 使用Ant自动地建造一个Struts项目 6
自动的建造过程 13
大量参数化的Ant建造脚本 13
1.2 将你的应用默认为一个ActionForward 14
1.3 什么是“jsessionid”,为什么我需要它 16
序 19
1.4 为大型项目使用模块 19
在建造模块时确定界面 20
致谢 20
使用多个资源文件 21
验证你的XML 21
关于本书 22
1.5 在配置中指定资源属性文件 25
1.6 应用中的多个消息资源 27
不要在Ant脚本中使用通配符 28
1.7 在Struts定制标签中使用束属性 28
在产品中将〈message-resources〉空属性设置为真,在开发中设置为假 31
1.8 在你的应用中管理常量 32
使用类而不是界面存储常量 35
1.9 使用〈html:base/〉作坚固的页引用 35
1.10 级联风格单与Struts页面结合 37
1.11 实现DynaActionForms 38
第2章 表单和表单控件 42
第2章 表单和表单控件 42
2.1 显示错误和消息 44
避免使用〈html:messages〉header和footer属性 49
2.2 在域旁相邻处显示错误 50
〈html:messages〉比〈html:errors〉更好 50
2.3 创建一个定制的消息队列 53
当关联消息属性到字段名时,使用一致的命名 53
当创建定制队列时,选择唯一的队列名 56
2.4 分组显示错误和消息 57
2.5 在消息内动态地插入数据 62
2.6 从Action中使用message-resources属性文件 69
2.7 创建一个向导 73
2.8 交替的行颜色 80
2.9 上载一个文件 89
限制上载文件大小 95
第3章 Struts标签库 96
第3章 Struts标签库 96
3.1 使用〈html:link/〉增加应用程序的可维护性 105
倾向于使用Struts标签,而不是任何对应的HTML标签 109
3.2 使用〈html:img/〉显示从一个属性文件映射的图像 109
在大多数情况下保持单一的图像目录 111
3.3 用〈bean:write/〉标签编码信息 113
留心把未过滤的信息发送到浏览器 115
3.4 使用〈bean:define/〉向页面暴露信息 116
使用〈bean:define/〉时设置type和scope属性 119
3.5 为简单的服务器端包含使用〈bean:include/〉 122
3.6 使用〈logic:present/〉标签来确定页面内容 126
逻辑标签不要实现“try、catch、finally” 129
3.7 用〈logic:present/〉标签调试图形用户界面 130
3.8 为视图决策使用〈logic:equal/〉标签 134
留心null值 138
3.9 用〈bean:resource/〉将struts.config.xml暴露给视图 138
3.10 使用〈html:rewrite/〉解析URL 147
使用JavaScript和〈html:rewrite/〉时要小心 152
3.11 清理会话范围的属性 153
3.12 创建基本的Struts Tiles页面 158
实现Tile时为不同文件类型使用单独的目录 162
什么时候使用Tile 163
3.13 使用Tile和XML定义 164
不要浪费时间——尽快从基于XML的Tile入手 169
第4章 Struts-布局标签库 170
第4章 Struts-布局标签库 170
4.1 使用Struts布局标签配置应用程序 175
4.2 用Struts布局标签创建简单表格 178
4.3 用Struts布局标签创建一个多列动态表格 182
4.4 使用Struts布局面板 187
4.5 用Struts布局把外观加到项目中 193
4.6 用Struts布局创建具有可选择行的表格 201
4.7 用Struts布局创建树导航模式 206
选择一个导航办法,使你的应用程序可伸缩 207
4.8 用Struts布局创建“面包屑踪迹” 217
在恰当的地方实现面包屑 224
4.9 用Struts布局创建页签片 224
检查你的页签 225
4.10 用Struts布局实现一个“分页程序” 233
保持Actions尽可能地短 236
第5章 在Struts框架之内作有效性验证 242
第5章 在Struts框架之内作有效性验证 242
5.1 使用ActionForm进行验证 244
5.2 Struts验证器文件说明(服务器端) 247
5.3 Struts验证器文件说明(客户端) 252
不要把JavaScript作为你唯一的有效性验证手段 255
5.4 使用声明的异常处理 256
5.5 汇总异常 261
总是创建一个全局的异常标签捕获java.lang.Exception 261
5.6 为DispatchAction定制表单 268
5.7 使用验证器常量 276
应用高度凝聚到DispatchAction中 276
使用验证器常量增加可维护性 281
5.8 在向导程序中验证有效性 282
5.9 为跨平台验证创建可插拔的验证器 287
第6章 国际化 294
第6章 国际化 294
6.1 动态设置locale 296
6.2 国际化你的文本 298
6.3 国际化图像 302
倾向使用带键的标签属性 304
6.4 产生locale敏感的ActionForward 305
6.5 国际化你的tile 309
6.6 国际化验证 312
第7章 登录,安全和防护 317
第7章 登录,安全和防护 317
7.1 Tomcat域认证和Struts 320
7.2 处理注销 326
7.3 切换到SSL再切换回来 329
审慎地使用SSL 335
7.4 用容器使动作映射安全 336
使用容器来保护资源 338
7.5 定制动作映射安全 338
7.6 保护页面上的区域 343
7.7 保护字段 346
第8章 高级方法 348
第8章 高级方法 348
8.1 使用Struts插件缓存 352
巩固资源引用 357
8.2 使用Tile控制器 358
8.3 用XSL生成响应 365
8.4 生成PDF 371
创建独立于View实现的解决办法 377
8.5 Hibernate和Struts 377
8.6 应用分层 392
8.7 强化航行 406
8.8 使用数据库存储消息-资源属性 417
在需要的时候强化航行 417
第9章 测试 424
第9章 测试 424
9.1 用StrutsTestCase进行容器之外的测试 426
9.2 使用StrutsTestCase和Cactus进行容器内测试 437
9.3 用StrutsTestCase测试DynaActionForm 444
9.4 测试模块 449
9.5 Struts应用的性能试验 454
使用契约设计来设计模块测试 454
生成一个性能测试计划 461
9.6 测试覆盖度 462
使用连续覆盖测试 468
参考文献 469
索引 473