标题：实战STRUTS
基本信息
原书名： Struts in Action: Building Web Applications with the Leading Java Framework
原出版社： Manning Publications  实战STRUTS作者： （美）Ted Husted等   
译者： 黄若波 程峰 程繁科
出版社：机械工业出版社
ISBN：7111162811
上架时间：2005-6-8
出版日期：2005 年5月
开本：16开
页码：464
版次：1-1
内容简介
本书是由struts开发小组的核心成员编写的一本关于struts开发的经典书籍。它一步步地由浅人深，将struts分解成相对独立的部分进行了讲解。本书除了介绍struts以外，同时还介绍了一些与struts相关的组件，合理地使用这些组件可以帮助程序员开发出更加健壮、更加专业、更加容易维护的应用程序。对于刚刚接触struts的新手而言，本书无异于是学习和掌握struts的圣经。对于在struts方面有不少经验的程序员而言，本书也提供了struts底层内容，帮助读者更好地编写基于struts的应用程序。
struts解决了许多web应用程序开发中的常见问题。基于struts应用程序框架构造的应用程序，除了可以复用业已证明可用的解决方案外，同时也可以使得开发人员更加关注应用程序的特性。struts是由apache软件基金会支持的开源软件。
本书完整介绍了struts框架结构，涵盖了设计、数据校验、数据库访问、动态页面生成、本地化、struts配置以及其他一些重要的方面。书中还介绍了如何同时使用jsp标签和velocity模板，并仔细介绍了struts体系结构以及struts控制流，同时也说明了如何扩展struts框架结构。
书中还明确指出了struts 1.0和1.1版本间的区别，同时还通过实例说明了struts 1.0应用程序向struts 1.1应用程序转换的技术。本书还介绍了很多已得到证明的设计技术、模式和策略，而这些内容在其他书中是很难找到的。
目录
第一部分 struts起步
第1章 概述1
1?1 本书的目的1
1?1?1 struts的开发人员1
1?1?2 为什么说struts是开源软件2
1?1?3 为什么被称为struts2
1?2 应用程序框架的概念2
1?3 必备知识3
1?3?1 http3
1?3?2 通用网关接口4
1?3?3 java servlet5
1?3?4 jsp6
1?3?5 jsp标签7
1?3?6 javabean8
1?3?7 model 29
1?4 struts概述9
1?4?1 构造一个简单的应用程序11
1?4?2 准备工作11
1?4?3 如何完成整个练习12
1?4?4 回顾17
.1?5 总结20
第2章 研究struts体系结构21
2?1 言众人所言21
2?2 为什么使用struts21
2?2?1 历史的回顾21
2?2?2 struts介绍22
2?2?3 struts控制层22
2?2?4 使用struts开发web应用程序26
2?3 为什么需要框架结构26
2?3?1 web——麻烦的源头26
2?3?2 servlet解决方案27
2?3?3 servlet框架结构28
2?3?4 黑盒和白盒系列29
2?4 struts、model 2和mvc29
2?4?1 mvc的演变29
2?4?2 model 2的产生30
2?4?3 应用程序层——独立的视图层31
2?4?4 struts如何实现model 2、mvc和分层32
2?5 struts控制流33
2?5?1 流程概述33
2?5?2 更微小的细节35
2?5?3 struts的性能37
2?6 struts的强项和弱点38
2?6?1 struts的缺点38
2?6?2 struts的优点40
2?7 总结41
第3章 构造一个简单的应用程序42
3?1 从基础了解struts42
3?2 简述登录应用程序的流程43
3?2?1 起步43
3?2?2 将会使用的页面43
3?2?3 欢迎页面44
3?2?4 登录页面44
3?2?5 再次进入欢迎页面45
3?2?6 退出欢迎页面45
3?2?7 特性摘要45
3?3 解剖登录应用程序46
3?3?1 浏览器中欢迎页面的代码46
3?3?2 欢迎页面的jsp源代码47
3?3?3 欢迎页面的配置信息49
3?3?4 浏览器中登录页面的代码50
3?3?5 登录页面对应的配置部分52
3?3?6 logonsubmit的源代码52
3?3?7 logonform的源代码53
3?3?8 logonaction的源代码55
3?3?9 logoffaction的源代码60
3?4 构造一个应用程序62
3?4?1 定义需求62
3?4?2 计划应用程序63
3?4?3 计划源代码树结构65
3?4?4 安装自己的开发工具65
3?4?5 建立build?xml文件66
3?4?6 建立web?xml文件66
3?4?7 建立struts?config?xml文件67
3?4?8 测试部署68
3?4?9 构造我们的欢迎页面69
3?4?10构造登录页面70
3?4?11构造常量类71
3?4?12构造其他的类72
3?4?13创建用户目录72
3?4?14配置actionerrors73
3?4?15编译和测试登录页面73
3?4?16修改欢迎页面74
3?4?17struts的action：forward?action75
3?5 总结76
第4章 配置struts组件77
4?1 三个xml文件和一个属性文件77
4?2 web应用程序部署描述文件78
4?2?1 web?xml文件78
4?2?2 actionservlet的参数80
4?3 struts配置81
4?3?1 细节82
4?3?2 管理修改83
4?3?3 原则：隐藏变化83
4?4 struts配置元素84
4?4?1〈global?exceptions〉85
4?4?2〈form?beans〉86
4?4?3〈global?forwards〉87
4?4?4〈action?mappings〉88
4?4?5〈controller〉89
4?4?6〈message?resources〉90
4?4?7〈plug?in〉90
4?4?8〈data?sources〉91
4?4?9 编写自己的子类92
4?4?10struts配置文件的一个框架92
4?5 应用程序的资源文件94
4?6 ant文件95
4?7 配置struts的核心97
4?7?1 安装java和servlet容器97
4?7?2 安装一个开发环境98
4?7?3 安装struts的核心文件98
4?8 配置tiles框架结构98
4?9 配置struts validator99
4?10使用struts空白应用程序100
4?11配置模块化的应用程序102
4?11?1 分而治之102
4?11?2 前缀化页面104
4?11?3 更新配置文件104
4?12 共享struts的jar文件104
4?13 总结105
第二部 分提出自己的框架结构
第5章 处理actionform107
5?1 输入垃圾，输出珠宝107
5?2 多面手actionform110
5?2?1 使用actionform来填充自己的域110
5?2?2 使用actionform作为数据缓存111
5?2?3 使用actionform作为数据校验器112
5?2?4 使用actionform作为类型转换器112
5?2?5 使用actionform作为数据传递对象112
5?2?6使用actionform作为防火墙113
5?3 actionform的设计结果114
5?3?1 actionform可能和业务逻辑层对象共享名字114
5?3?2 actionform可能减少定制的代码量114
5?3?3 actionform可以封装辅助函数115
5?3?4 actionform可以内含其他bean115
5?4 actionform的其他类型116
5?4?1 map?backed actionform116
5?4?2 dynaactionform117
5?5 哪些情况下不使用actionform118
5?5?1 为什么actionform不是一个map对象118
5?5?2 为什么actionform不是一个简单的javabean118
5?5?3 为什么actionform不是一个接口119
5?6 使用actionform119
5?6?1 实现业务层逻辑120
5?6?2 内含可改变的数据对象121
5?6?3 设置不可改变数据对象122
5?6?4 设置可改变的数据对象123
5?6?5 使用工厂方法123
5?6?6 传递一个map对象124
5?6?7 通过反射传递数据126
5?6?8 使用接口类130
5?7 baseform131
5?7?1 sessionlocale131
5?7?2 dispatch132
5?7?3 自动填充132
5?7?4 basemapform132
5?8 总结133
第6章 使用actionforward对象134
6?1 actionforward的功能134
6?2 actionforward如何工作135
6?3 本地转发和全局转发136
6?4 运行时刻参数137
6?4?1 在页面中增加参数137
6?4?2 在action类中添加参数138
6?5 动态转发138
6?6 导航条内容不变的原因138
6?7 编写自己的actionforward139
6?8 总结140
第7章 actionmapping的设计141
7?1 了解actionmapping141
7?1?1 actionmapping bean142
7?1?2 actionmapping目录142
7?2 actionmapping属性143
7?2?1 path属性143
7?2?2 forward属性144
7?2?3 include属性144
7?2?4 type属性144
7?2?5 classname属性144
7?2?6 name属性145
7?2?7 roles属性145
7?2?8 scope属性145
7?2?9 validate属性145
7?2?10input属性145
7?2?11parameter属性146
7?2?12attribute属性147
7?2?13prefix和suffix属性147
7?2?14unknown属性147
7?3 内部组件148
7?3?1 本地转发148
7?3?2 本地异常148
7?4 编写自己的actionmapping148
7?5 总结149
第8章 使用action对象150
8?1 准备，设定，行动150
8?2 使用action对象150
8?2?1 action是什么151
8?2?2 何时调用action152
8?2?3 action可以做什么153
8?2?4 action到底是什么157
8?3 标准的action158
8?3?1 标准的桥接action159
8?3?2 标准的基本action161
8?4 级联action165
8?5 scaffold action167
8?5?1 仅仅和转发相关的action167
8?5?2 辅助action172
8?6 基本的view action174
8?7 辅助action类使用的技术175
8?7?1 可选择的转发176
8?7?2 先调用177
8?7?3 捕获级联的异常177
8?7?4 灵活的错误信息转发179
8?7?5 提示成功消息180
8?7?6 可变换的视图180
8?7?7 使用反射技术来调用方法181
8?7?8 使用反射来调用类181
8?8 使用灵活转发182
8?9 总结186
第9章 扩展actionservlet187
9?1 actionservlet的地位187
9?2 requestprocessor189
9?2?1 process方法190
9?2?2 processroles190
9?3 exceptionhandler192
9?4 插件193
9?5 总结193
第三部 分构造自己的页面
第10章 显示动态内容195
10?1 标签——就是你195
10?1?1 jsp标签库——有什么优点195
10?1?2 struts和jstl198
10?1?3 struts标签库和mvc199
10?2 使用扩展标签库200
10?2?1 扩展标签是如何工作的200
10?2?2 如何安装扩展标签202
10?2?3 扩展标签库不是什么203
10?3 struts标签库204
10?3?1 struts标签库的常用功能205
10?3?2 bean标签206
10?3?3 html标签208
10?3?4 logic标签210
10?4 使用struts标签213
10?4?1 struts的标签213
10?4?2 基础213
10?4?3 技术220
10?4?4 可用的控件231
10?5 不同的视图232
10?5?1 struts和jsp232
10?5?2 servlet上下文232
10?5?3 除了jsp以外233
10?6 总结233
第11章 使用tiles开发应用235
11?1 管理布局235
11?1?1 用动态模板进行分层235
11?1?2 运用模板的结果236
11?1?3 使用模板236
11?1?4 集成模板、tiles和struts237
11?2 创建一个layout模板238
11?2?1 tile是什么240
11?2?2 部署tiles模板241
11?2?3 添加样式表242
11?2?4 模板和mvc243
11?3 tiles definition243
11?3?1 声明definition243
11?3?2 jsp声明244
11?3?3 配置文件声明247
11?3?4 把definition作为actionforward249
11?4 tile 属性250
11?4?1 useattribute250
11?4?2 importattribute251
11?4?3 put251
11?4?4 putlist和add253
11?5 把一个应用程序转化为tiles253
11?5?1 设置tiles框架253
11?5?2 测试默认配置254
11?5?3 浏览页面254
11?5?4 使用〈tiles:insert〉重构页面256
11?5?5 把〈tiles:insert〉标签析取到definition中262
11?5?6 模式化基础layout265
11?5?7 把definition精练为基础类和扩展类266
11?5?8 形成例程267
11?5?9 对移植的管理267
11?6 总结268
第12章 验证用户输入270
12?1 只有看见时我才知道270
12?1?1 我们不能拒绝的输入270
12?1?2 web层的校验271
12?1?3 使用校验器的结果272
12?2 struts validator简述273
12?3 基本校验器280
12?3?1 required校验器281
12?3?2 mask校验器281
12?3?3 range校验器282
12?3?4 maxlength校验器283
12?3?5 minlength校验器283
12?3?6 byte、short、integer、long、float和double校验器283
12?3?7 date校验器283
12?3?8 creditcard校验器284
12?3?9 email校验器284
12?4 资源包284
12?4?1 默认的资源包285
12?4?2 默认校验器消息285
12?4?3 定制化的校验器消息286
12?5 配置文件286
12?6 校验器的jsp标签287
12?7 validatorform和validatoractionform290
12?8 本地化的校验器291
12?9 可插入的校验器291
12?10技术292
12?10?1 多页面校验293
12?10?2 取消按钮293
12?10?3 定制化的消息293
12?10?4 相关联域294
12?10?5 联合使用校验器和validate方法295
12?11移植应用程序到struts validator296
12?11?1 安装配置validator框架结构296
12?11?2 测试默认的配置297
12?11?3 回顾你的校验方法297
12?11?4 扩展validatorform或者scaffold baseform298
12?11?5 选择一个校验器来进行移植工作298
12?11?6 添加formset、form和field元素299
12?11?7 在applicationresources中添加新的选项300
12?11?8 调用struts校验器301
12?11?9 测试和重复301
12?11?10删除actionform子类302
12?12总结303
第13章 内容本地化305
13?1 用另外一个名字305
13?1?1 为什么进行本地化306
13?1?2 java的国际化功能306
13?2 struts的国际化组件310
13?2?1 session中的locale属性310
13?2?2 messageresources311
13?2?3 默认的资源包311
13?2?4 actionerrors313
13?2?5 actionmessages313
13?2?6 区域敏感的jsp标签314
13?3 本地化struts应用程序318
13?3?1 允许本地化318
13?3?2 使用框架结构locale对象319
13?3?3 将标签和消息存放在属性文件中320
13?3?4 创建语言相关的属性文件320
13?3?5 在可以本地化模块中指定恰当的键值321
13?3?6 其他模块使用〈bean：message〉321
13?4 本地化其他模块321
13?4?1 本地化struts validator321
13?4?2 本地化tiles322
13?4?3 本地化集合322
13?5 总结323
第14章 使用数据服务功能325
14?1 起步325
14?1?1 从层次的角度看jdbc325
14?1?2 介绍数据服务326
14?2 研究业务层327
14?2?1 struts——使用自己的模式327
14?2?2 定义业务对象327
14?2?3 设计业务对象328
14?2?4 设计结果329
14?2?5 混合业务方法和action(不推荐)329
14?2?6 一个简单的例子330
14?3 在struts中使用processbeans和jdbc330
14?3?1 介绍processbean331
14?3?2 作为数据传递对象的processbean332
14?3?3 填充processbean333
14?3?4 执行processbean333
14?3?5 访问数据服务334
14?3?6 使用典型的流程335
14?3?7 对业务行为进行编码336
14?3?8 使用processbean作为持久层338
14?3?9 使用其他的持久层338
14?4 使用result对象339
14?5 使用辅助action340
14?6 使用lucene341
14?7 使用内容摘要345
14?7?1 digester和rss346
14?7?2 获取和生成数据346
14?7?3 rss摘要347
14?8 在struts中使用ejb349
14?8?1 session facade350
14?8?2 数据传递对象350
14?8?3 实现模式350
14?9 总结351
第四部 分以实例介绍struts
第15章 artimus:实例研究353
15?1 框架的框架353
15?2 scaffold——工具的产生354
15?3 关于artimus354
15?4 部署描述文件(web?xml)356
15?4?1 配置artimus357
15?4?2 应用程序的属性357
15?4?3 连接适配器358
15?4?4 启动属性358
15?4?5 其他配置设定358
15?4?6 安全设定358
15?4?7 受保护的url359
15?4?8 授权用户359
15?4?9 鉴证策略359
15?5 artimusservlet359
15?5?1 子类361
15?5?2 串标志符361
15?5?3 扩展点361
15?6 应用程序与sql属性文件362
15?7 index?jsp363
15?8 全局转发363
15?9 /find/recent365
15?9?1 扩展bean368
15?9?2 super?execute368
15?9?3 getarticles368
15?9?4 access?findbylast与resultlist368
15?9?5 processresult369
15?9?6 processaction370
15?10 tiles?xml与article?jsp371
15?10?1 useattribute373
15?10?2 basestyle373
15?10?3 标题373
15?10?4 tiles373
15?11 result?jsp375
15?11?1 图例376
15?11?2 isresult376
15?11?3 result377
15?12 article actions380
15?13 view?jsp382
15?13?1 headline383
15?13?2 content383
15?13?3 contributor384
15?14 form?jsp385
15?14?1 article content386
15?14?2 contributed/contributor387
15?14?3 article id387
15?14?4 validation387
15?15 /do/menu389
15?15?1 logon390
15?15?2 菜单391
15?15?3 我们的控件392
15?15?4 saveresult方法392
15?15?5 我们的结果集392
15?16 menu?jsp393
15?16?1 /find/hours394
15?16?2 /menu/find395
15?16?3 /find/last396
15?16?4 /menu/contributor396
15?16?5 /menu/manager397
15?17 总结397
第16章 redux:迁移到struts 1?1398
16?1 下一步：struts 1?1398
16?1?1 struts 1?1特征集399
16?1?2 我们可使用的特征401
16?2 改变基础402
16?2?1 struts 1?1中的tiles402
16?2?2 struts 1?1中的validator405
16?2?3 struts 1?1中的reloadaction406
16?2?4 对web?xml和struts?config?xml的其他变更406
16?2?5 message?jsp(版本1?1)406
16?2?6 form?jsp(版本1?1)407
16?2?7 menucreate(版本1?1)409
16?2?8 继续前进409
16?3 可自由选择的修改410
16?3?1 dynaactionform格式410
16?3?2 基于action的安全机制411
16?3?3 修改action路径413
16?3?4 struts 1?1中的应用程序资源414
16?4 总结414
第17章 velocity:替换jsp416
17?1 转移到velocity模板416
17?2 变化导致了应用程序框架结构的出现416
17?3 为什么需要velocity416
17?3?1 velocity轻便、快捷而且通用417
17?3?2 velocity可以很好地与其他软件协作417
17?3?3 velocity简单但是功能强大417
17?4 在web应用程序中使用velocity418
17?4?1 将velocity与servlet资源一起使用418
17?4?2 联合使用velocity和上下文属性419
17?4?3 velocity如何与struts协同工作420
17?4?4 velocitystruts工具包420
17?4?5 struts view工具421
17?5 我们的登录模板421
17?6 建立velocityviewservlet424
17?6?1 安装velocityviewservlet424
17?6?2 部署velocity servlet424
17?6?3 工具箱配置文件425
17?7 设置struts?config426
17?8 总结427
附录
附录a 设计模式429
附录b struts配置文件的api435
附录c 标签库快速参考446
术语表450
参考文献456