第一部分 Struts起步
第1章 概述1
11 本书的目的1
111 Struts的开发人员1
112 为什么说Struts是开源软件2
113 为什么被称为Struts2
12 应用程序框架的概念2
13 必备知识3
131 HTTP3
132 通用网关接口4
133 Java servlet5
134 JSP6
135 JSP标签7
136 JavaBean8
137 Model 29
14 Struts概述9
141 构造一个简单的应用程序11
142 准备工作11
143 如何完成整个练习12
144 回顾17
15 总结20
第2章 研究Struts体系结构21
21 言众人所言21
22 为什么使用Struts21
221 历史的回顾21
222 Struts介绍22
223 Struts控制层22
224 使用Struts开发Web应用程序26
23 为什么需要框架结构26
231 Web——麻烦的源头26
232 servlet解决方案27
233 Servlet框架结构28
234 黑盒和白盒系列29
24 Struts. Model 2和MVC29
241 MVC的演变29
242 Model 2的产生30
243 应用程序层——独立的视图层31
244 Struts如何实现Model 2. MVC和分层32
25 Struts控制流33
251 流程概述33
252 更微小的细节35
253 Struts的性能37
26 Struts的强项和弱点38
261 Struts的缺点38
262 Struts的优点40
27 总结41
第3章 构造一个简单的应用程序42
31 从基础了解Struts42
32 简述登录应用程序的流程43
321 起步43
322 将会使用的页面43
323 欢迎页面44
324 登录页面44
325 再次进入欢迎页面45
326 退出欢迎页面45
327 特性摘要45
33 解剖登录应用程序46
331 浏览器中欢迎页面的代码46
332 欢迎页面的JSP源代码47
333 欢迎页面的配置信息49
334 浏览器中登录页面的代码50
335 登录页面对应的配置部分52
336 LogonSubmit的源代码52
337 LogonForm的源代码53
338 LogonAction的源代码55
339 LogoffAction的源代码60
34 构造一个应用程序62
341 定义需求62
342 计划应用程序63
343 计划源代码树结构65
344 安装自己的开发工具65
345 建立buildxml文件66
346 建立webxml文件66
347 建立strutsconfigxml文件67
348 测试部署68
349 构造我们的欢迎页面69
3410构造登录页面70
3411构造常量类71
3412构造其他的类72
3413创建用户目录72
3414配置ActionErrors73
3415编译和测试登录页面73
3416修改欢迎页面74
3417Struts的Action:ForwardAction75
35 总结76
第4章 配置Struts组件77
41 三个XML文件和一个属性文件77
42 Web应用程序部署描述文件78
421 webxml文件78
422 ActionServlet的参数80
43 Struts配置81
431 细节82
432 管理修改83
433 原则:隐藏变化83
44 Struts配置元素84
441〈globalexceptions〉85
442〈formbeans〉86
443〈globalforwards〉87
444〈actionmappings〉88
445〈controller〉89
446〈messageresources〉90
447〈plugin〉90
448〈datasources〉91
449 编写自己的子类92
4410Struts配置文件的一个框架92
45 应用程序的资源文件94
46 Ant文件95
47 配置Struts的核心97
471 安装Java和Servlet容器97
472 安装一个开发环境98
473 安装Struts的核心文件98
48 配置Tiles框架结构98
49 配置Struts Validator99
410使用Struts空白应用程序100
411配置模块化的应用程序102
4111 分而治之102
4112 前缀化页面104
4113 更新配置文件104
412 共享Struts的JAR文件104
413 总结105
第二部 分提出自己的框架结构
第5章 处理ActionForm107
51 输入垃圾, 输出珠宝107
52 多面手ActionForm110
521 使用ActionForm来填充自己的域110
522 使用ActionForm作为数据缓存111
523 使用ActionForm作为数据校验器112
524 使用ActionForm作为类型转换器112
525 使用ActionForm作为数据传递对象112
526使用ActionForm作为防火墙113
53 ActionForm的设计结果114
531 ActionForm可能和业务逻辑层对象共享名字114
532 ActionForm可能减少定制的代码量114
533 ActionForm可以封装辅助函数115
534 ActionForm可以内含其他bean115
54 ActionForm的其他类型116
541 Mapbacked ActionForm116
542 DynaActionForm117
55 哪些情况下不使用ActionForm118
551 为什么ActionForm不是一个Map对象118
552 为什么ActionForm不是一个简单的JavaBean118
553 为什么ActionForm不是一个接口119
56 使用ActionForm119
561 实现业务层逻辑120
562 内含可改变的数据对象121
563 设置不可改变数据对象122
564 设置可改变的数据对象123
565 使用工厂方法123
566 传递一个Map对象124
567 通过反射传递数据126
568 使用接口类130
57 BaseForm131
571 SessionLocale131
572 Dispatch132
573 自动填充132
574 BaseMapForm132
58 总结133
第6章 使用ActionForward对象134
61 ActionForward的功能134
62 ActionForward如何工作135
63 本地转发和全局转发136
64 运行时刻参数137
641 在页面中增加参数137
642 在Action类中添加参数138
65 动态转发138
66 导航条内容不变的原因138
67 编写自己的ActionForward139
68 总结140
第7章 ActionMapping的设计141
71 了解ActionMapping141
711 ActionMapping bean142
712 ActionMapping目录142
72 ActionMapping属性143
721 path属性143
722 forward属性144
723 include属性144
724 type属性144
725 className属性144
726 name属性145
727 roles属性145
728 scope属性145
729 validate属性145
7210input属性145
7211parameter属性146
7212attribute属性147
7213prefix和suffix属性147
7214unknown属性147
73 内部组件148
731 本地转发148
732 本地异常148
74 编写自己的ActionMapping148
75 总结149
第8章 使用Action对象150
81 准备, 设定, 行动150
82 使用Action对象150
821 Action是什么151
822 何时调用Action152
823 Action可以做什么153
824 Action到底是什么157
83 标准的Action158
831 标准的桥接Action159
832 标准的基本Action161
84 级联Action165
85 Scaffold Action167
851 仅仅和转发相关的Action167
852 辅助Action172
86 基本的View Action174
87 辅助Action类使用的技术175
871 可选择的转发176
872 先调用177
873 捕获级联的异常177
874 灵活的错误信息转发179
875 提示成功消息180
876 可变换的视图180
877 使用反射技术来调用方法181
878 使用反射来调用类181
88 使用灵活转发182
89 总结186
第9章 扩展ActionServlet187
91 ActionServlet的地位187
92 RequestProcessor189
921 process方法190
922 processRoles190
93 ExceptionHandler192
94 插件193
95 总结193
第三部 分构造自己的页面
第10章 显示动态内容195
101 标签——就是你195
1011 JSP标签库——有什么优点195
1012 Struts和JSTL198
1013 Struts标签库和MVC199
102 使用扩展标签库200
1021 扩展标签是如何工作的200
1022 如何安装扩展标签202
1023 扩展标签库不是什么203
103 Struts标签库204
1031 Struts标签库的常用功能205
1032 bean标签206
1033 html标签208
1034 logic标签210
104 使用Struts标签213
1041 Struts的标签213
1042 基础213
1043 技术220
1044 可用的控件231
105 不同的视图232
1051 Struts和JSP232
1052 servlet上下文232
1053 除了JSP以外233
106 总结233
第11章 使用Tiles开发应用235
111 管理布局235
1111 用动态模板进行分层235
1112 运用模板的结果236
1113 使用模板236
1114 集成模板. Tiles和Struts237
112 创建一个layout模板238
1121 tile是什么240
1122 部署Tiles模板241
1123 添加样式表242
1124 模板和MVC243
113 Tiles Definition243
1131 声明Definition243
1132 JSP声明244
1133 配置文件声明247
1134 把Definition作为ActionForward249
114 Tile 属性250
1141 useAttribute250
1142 importAttribute251
1143 put251
1144 putList和add253
115 把一个应用程序转化为Tiles253
1151 设置Tiles框架253
1152 测试默认配置254
1153 浏览页面254
1154 使用〈tiles:insert〉重构页面256
1155 把〈tiles:insert〉标签析取到Definition中262
1156 模式化基础layout265
1157 把Definition精练为基础类和扩展类266
1158 形成例程267
1159 对移植的管理267
116 总结268
第12章 验证用户输入270
121 只有看见时我才知道270
1211 我们不能拒绝的输入270
1212 Web层的校验271
1213 使用校验器的结果272
122 Struts Validator简述273
123 基本校验器280
1231 required校验器281
1232 mask校验器281
1233 range校验器282
1234 maxLength校验器283
1235 minLength校验器283
1236 byte. short. integer. long. float和double校验器283
1237 date校验器283
1238 creditCard校验器284
1239 email校验器284
124 资源包284
1241 默认的资源包285
1242 默认校验器消息285
1243 定制化的校验器消息286
125 配置文件286
126 校验器的JSP标签287
127 ValidatorForm和ValidatorActionForm290
128 本地化的校验器291
129 可插入的校验器291
1210技术292
12101 多页面校验293
12102 取消按钮293
12103 定制化的消息293
12104 相关联域294
12105 联合使用校验器和validate方法295
1211移植应用程序到Struts Validator296
12111 安装配置Validator框架结构296
12112 测试默认的配置297
12113 回顾你的校验方法297
12114 扩展ValidatorForm或者Scaffold BaseForm298
12115 选择一个校验器来进行移植工作298
12116 添加formset. form和field元素299
12117 在ApplicationResources中添加新的选项300
12118 调用Struts校验器301
12119 测试和重复301
121110删除ActionForm子类302
1212总结303
第13章 内容本地化305
131 用另外一个名字305
1311 为什么进行本地化306
1312 Java的国际化功能306
132 Struts的国际化组件310
1321 Session中的Locale属性310
1322 MessageResources311
1323 默认的资源包311
1324 ActionErrors313
1325 ActionMessages313
1326 区域敏感的JSP标签314
133 本地化Struts应用程序318
1331 允许本地化318
1332 使用框架结构Locale对象319
1333 将标签和消息存放在属性文件中320
1334 创建语言相关的属性文件320
1335 在可以本地化模块中指定恰当的键值321
1336 其他模块使用〈bean:message〉321
134 本地化其他模块321
1341 本地化Struts Validator321
1342 本地化Tiles322
1343 本地化集合322
135 总结323
第14章 使用数据服务功能325
141 起步325
1411 从层次的角度看JDBC325
1412 介绍数据服务326
142 研究业务层327
1421 Struts——使用自己的模式327
1422 定义业务对象327
1423 设计业务对象328
1424 设计结果329
1425 混合业务方法和Action(不推荐)329
1426 一个简单的例子330
143 在Struts中使用ProcessBeans和JDBC330
1431 介绍ProcessBean331
1432 作为数据传递对象的ProcessBean332
1433 填充ProcessBean333
1434 执行ProcessBean333
1435 访问数据服务334
1436 使用典型的流程335
1437 对业务行为进行编码336
1438 使用ProcessBean作为持久层338
1439 使用其他的持久层338
144 使用result对象339
145 使用辅助Action340
146 使用Lucene341
147 使用内容摘要345
1471 Digester和RSS346
1472 获取和生成数据346
1473 RSS摘要347
148 在Struts中使用EJB349
1481 Session Facade350
1482 数据传递对象350
1483 实现模式350
149 总结351
第四部 分以实例介绍Struts
第15章 Artimus:实例研究353
151 框架的框架353
152 Scaffold——工具的产生354
153 关于Artimus354
154 部署描述文件(webxml)356
1541 配置Artimus357
1542 应用程序的属性357
1543 连接适配器358
1544 启动属性358
1545 其他配置设定358
1546 安全设定358
1547 受保护的URL359
1548 授权用户359
1549 鉴证策略359
155 ArtimusServlet359
1551 子类361
1552 串标志符361
1553 扩展点361
156 应用程序与SQL属性文件362
157 indexjsp363
158 全局转发363
159 /find/Recent365
1591 扩展bean368
1592 superexecute368
1593 getArticles368
1594 AccessfindByLast与ResultList368
1595 ProcessResult369
1596 ProcessAction370
1510 tilesxml与Articlejsp371
15101 useAttribute373
15102 baseStyle373
15103 标题373
15104 Tiles373
1511 resultjsp375
15111 图例376
15112 isResult376
15113 RESULT377
1512 article actions380
1513 viewjsp382
15131 headline383
15132 content383
15133 contributor384
1514 formjsp385
15141 article content386
15142 contributed/contributor387
15143 article ID387
15144 validation387
1515 /do/Menu389
15151 logon390
15152 菜单391
15153 我们的控件392
15154 saveResult方法392
15155 我们的结果集392
1516 menujsp393
15161 /find/Hours394
15162 /menu/Find395
15163 /find/Last396
15164 /menu/Contributor396
15165 /menu/Manager397
1517 总结397
第16章 Redux:迁移到Struts 11398
161 下一步:Struts 11398
1611 Struts 11特征集399
1612 我们可使用的特征401
162 改变基础402
1621 Struts 11中的Tiles402
1622 Struts 11中的Validator405
1623 Struts 11中的ReloadAction406
1624 对webxml和strutsconfigxml的其他变更406
1625 messagejsp(版本11)406
1626 formjsp(版本11)407
1627 MenuCreate(版本11)409
1628 继续前进409
163 可自由选择的修改410
1631 DynaActionForm格式410
1632 基于Action的安全机制411
1633 修改Action路径413
1634 Struts 11中的应用程序资源414
164 总结414
第17章 Velocity:替换JSP416
171 转移到Velocity模板416
172 变化导致了应用程序框架结构的出现416
173 为什么需要Velocity416
1731 Velocity轻便. 快捷而且通用417
1732 Velocity可以很好地与其他软件协作417
1733 Velocity简单但是功能强大417
174 在Web应用程序中使用Velocity418
1741 将Velocity与servlet资源一起使用418
1742 联合使用Velocity和上下文属性419
1743 Velocity如何与Struts协同工作420
1744 VelocityStruts工具包420
1745 Struts View工具421
175 我们的登录模板421
176 建立VelocityViewServlet424
1761 安装VelocityViewServlet424
1762 部署Velocity servlet424
1763 工具箱配置文件425
177 设置strutsconfig426
178 总结427
附录
附录A 设计模式429
附录B Struts配置文件的API435
附录C 标签库快速参考446
术语表450
参考文献456
</font>