第1章 Struts与JavaWeb应用简介 1
1.1JavaWeb应用概述 1
1.1.1Servlet组件 2
1.1.2JSP组件 3
1.1.3共享数据在Web应用中的范围 3
1.1.4JavaBean组件及其在Web应用中的范围 5
1.1.5客户化JSP标签 5
1.1.6EJB组件 6
1.1.7XML语言 6
1.2.1请求转发 7
1.2Web组件的三种关联关系 7
1.1.8Web服务器和应用服务器 7
1.2.2请求重定向 8
1.2.3包含 9
1.3MVC概述 9
1.3.1MVC设计模式 10
1.3.2JSPMode11和JSPMode12 11
1.4Struts概述 13
1.4.1Struts实现MVC的机制 13
1.4.2Struts的工作流程 15
1.5小结 17
2.1分析helloapp应用的需求 19
2.2运用Struts框架 19
第2章 Struts应用:helloapp应用 19
2.3创建视图组件 20
2.3.1创建JSP文件 20
2.3.2创建消息资源文件 23
2.3.3创建ActionFormBean 23
2.3.4数据验证 25
2.4创建控制器组件 26
2.4.1Action类的工作机制 28
2.4.2访问封装在MessageResources中的本地化文本 28
2.4.3业务逻辑验证 28
2.4.4访问模型组件 29
2.5创建模型组件 30
2.4.6把HTTP请求转发给合适的视图组件 30
2.4.5向视图组件传递数据 30
2.6创建存放常量的Java文件 31
2.7创建配置文件 32
2.7.1创建Web应用的配置文件 32
2.7.2创建Struts框架的配置文件 33
2.8发布和运行helloapp应用 35
2.8.1服务器端装载hello.jsp的流程 37
2.8.2表单验证的流程 37
2.8.3逻辑验证失败的流程 39
2.8.4逻辑验证成功的流程 40
2.9小结 41
3.1收集和分析应用需求 43
第3章 Struts应用的需求分析与设计 43
3.2设计数据库 44
3.3设计应用的业务逻辑 45
3.3.1访问XML格式的用户信息 45
3.3.2访问数据库 47
3.4设计用户界面 49
3.4.1界面风格 50
3.4.2使用客户化标签 52
3.5设计ActionForm 53
3.6设计Action和Action映射 55
3.6.1设计LogonAction 58
3.6.2设计LogoffAction 60
3.6.3设计InsertAction 61
3.6.4设计SearchAction 62
3.6.5设计DisplayAllAction 63
3.7设计客户化标签 64
3.7.1设计ValidateSessionTag标签 64
3.7.2设计DisplayTag标签 66
3.7.3创建客户化app标签库的TLD文件 67
3.8小结 68
第4章 配置Struts应用 71
4.1Web应用的发布描述文件 71
4.1.1Web应用发布描述文件的文档类型定义(DTD) 71
4.2.1配置Struts的ActionServlet 72
4.2为Struts应用配置web.xml文件 72
4.2.2声明ActionServlet的初始化参数 73
4.2.3配置欢迎文件清单 74
4.2.4配置错误处理 75
4.2.5配置Struts标签库 76
4.3Struts配置文件 77
4.3.1org.apache.struts.config包 77
4.3.2〈struts-config〉元素 79
4.3.3〈data-sources〉元素 80
4.3.4〈form-beans〉元素 82
4.3.5〈global-exceptions〉元素 83
4.3.6〈global-forwards〉元素 84
4.3.7〈action-mappings〉元素 85
4.3.8〈controller〉元素 87
4.3.9〈message-resources〉元素 87
4.3.10〈plug-in〉元素 88
4.3.11配置多应用模块 89
4.4Digester组件 91
4.5Struts控制面板工具 91
4.6重新载入配置文件 93
4.7小结 94
第5章 Struts控制器组件 95
5.1控制器组件的控制机制 95
5.1.1ActionServlet类 96
5.1.2RequestProcessor类 99
5.1.3Action类 105
5.2使用内置的StrutsAction类 112
5.2.1org.apache.struts.actions.ForwardAction类 112
5.2.2org.apache.struts.actions.IncludeAction类 114
5.2.3org.apache.struts.actions.DispatchAction类 115
5.2.4org.apache.struts.actions.LookupDispatchAction类 118
5.2.5org.apache.struts.actions.SwitchAction类 121
5.3利用Token解决重复提交 121
5.4实用类 125
5.4.1RequestUtils类 125
5.4.2TagUtils类 125
5.4.4Globals类 126
5.4.3ModuleUtils类 126
5.5小结 127
第6章 Struts模型组件 129
6.1模型在MVC中的地位 129
6.2模型的概念和类型 130
6.2.1概念模型 130
6.2.2设计模型 131
6.3业务对象(BO) 133
6.3.1业务对象的特征和类型 133
6.3.2业务对象的重要性 134
6.4业务对象的持久化 134
6.4.2数据访问对象(DAO)设计模式 135
6.4.1对业务对象进行持久化的作用 135
6.4.3常用的ORM软件 136
6.5创建netstore应用的模型 137
6.5.1为netstore应用创建模型的步骤 137
6.5.2创建netstore应用的业务对象 138
6.5.3创建netstore应用的数据库 142
6.5.4netstore应用的ORM框架 145
6.5.5联合使用业务代理和DAO模式 155
6.6小结 167
第7章 Struts视图组件 169
7.1视图概述 169
7.2.1DTO数据传输对象 170
7.2在视图中使用JavaBean 170
7.2.2Struts框架提供的DTO:ActionFormBean 171
7.3使用ActionForm 172
7.3.1ActionForm的生命周期 172
7.3.2创建ActionForm 174
7.3.3配置ActionForm 176
7.3.4访问ActionForm 177
7.3.5处理表单跨页 178
7.4使用动态ActionForm 184
7.4.1配置动态ActionForm 185
7.4.2动态ActionForm的reset()方法 186
7.4.5在netstore应用中使用动态ActionForm 187
7.4.4动态ActionForm的表单验证 187
7.4.3访问动态ActionForm 187
7.5小结 189
第8章 扩展Struts框架 191
8.1Struts插件(PlugIn) 191
8.2扩展Struts的配置类 194
8.3控制器扩展点 195
8.3.1扩展ActionServlet类 195
8.3.2扩展RequestProcessor类 196
8.3.3扩展Action类 198
8.4扩展视图组件 200
8.5扩展模型组件 200
8.6小结 204
第9章 Struts应用的国际化 205
9.1本地化与国际化的概念 205
9.2Web应用的中文本地化 206
9.2.1处理HTTP请求数据编码 207
9.2.2处理数据库数据编码 207
9.2.3处理XML配置文件编码 207
9.2.4处理响应结果的编码 208
9.3Java对I18N的支持 208
9.3.1Locale类 208
9.3.2ResourceBundle类 214
9.3.3MessageFormat类和复合消息 214
9.4.1创建Struts的ResourceBundle 216
9.4Struts框架对国际化的支持 216
9.4.2访问ResourceBundle 217
9.5对helloapp应用实现国际化 220
9.5.1对JSP文件的文本、图片和按钮进行国际化 220
9.5.2创建临时中文资源文件 221
9.5.3对临时资源文件进行编码转换 222
9.5.4创建英文资源文件 223
9.5.5采用Servlet过滤器设置请求数据的字符编码 223
9.5.6运行国际化的helloapp应用 225
9.6异常处理的国际化 226
9.7小结 226
101.1validator-rules.xml文件 229
10.1安装和配置Validator框架 229
第10章 Validator验证框架 229
10.1.2validation.xml文件 233
10.1.3Validator插件 237
10.2Validator框架和ActionForm 238
10.3Validator框架和Struts客户化标签 240
10.4在netstore应用中使用Validator框架 241
10.5创建自定义的验证规则 245
10.6在Validator框架中使用JavaScript 247
10.7Validator框架的国际化 250
10.8小结 251
11.1.1Java异常 253
第11章 异常处理 253
11.1Java异常处理 253
11.1.2JVM的方法调用堆栈 254
11.1.3异常处理对性能的影响 255
11.1.4系统异常和应用异常 256
11.1.5使用异常链 256
11.1.6处理多样化异常 258
11.2Struts框架异常处理机制概述 260
11.3Struts框架异常处理机制的细节 261
11.3.1JavaWeb容器处理异常的机制 261
11.3.2ActionServlet类处理异常的机制 261
11.3.3RequestProcessor类处理异常的机制 262
11.3.4ExceptionHandler类处理异常的机制 263
11.4在Struts应用中处理异常的各种方式 266
11.4.1创建异常类 266
11.4.2由JavaWeb容器捕获异常 269
11.4.3以配置方式处理异常 271
11.4.4以编程方式处理异常 277
11.5小结 282
第12章 StrutsHTML标签库 283
12.1用于生成基本的HTML元素的标签 283
12.1.1〈html:html〉标签 288
12.1.2〈html:base〉标签 288
12.1.3〈html:link〉和〈html:rewrite〉标签 289
12.1.4〈html:img〉标签 292
12.2基本的表单标签 293
12.2.1〈html:form〉标签 296
12.2.2〈html:text〉标签 296
12.2.3〈html:cancel〉标签 297
12.2.4〈html:reset〉标签 298
12.2.5〈html:submit〉标签 298
12.2.6〈html:hidden〉标签 299
12.3检查框和单选按钮标签 299
12.3.1〈html:checkbox〉标签 304
12.3.2〈html:multibox〉标签 305
12.3.3〈html:radio〉标签 306
12.4下拉列表和多选列表标签 307
12.4.1〈html:select〉标签 311
12.4.2〈html:option〉标签 312
12.4.3〈html:options〉标签 313
12.4.4〈html:optionsCollection〉标签 314
12.5在表单中上传文件标签 315
12.5.1〈html:file〉标签 319
12.5.2在ActionFormBean中设定FormFile属性 319
12.5.3在Action类中处理文件上传 319
12.6〈html:errors〉标签 320
12.6.1错误消息的来源 324
12.6.3〈html:errors〉标签的用法 326
12.6.2格式化地显示错误消息 326
12.7〈html:messages〉标签 328
12.8小结 330
第13章 StrutsBean标签库 331
13.1访问HTTP请求信息或JSP隐含对象 331
13.1.1〈bean:header〉标签 334
13.1.2〈bean:parameter〉标签 334
13.1.3〈bean:cookie〉标签 335
13.1.4〈bean:page〉标签 336
13.2访问Web应用资源 337
13.2.1〈bean:message〉标签 339
13.2.3〈bean:struts〉标签 341
13.2.2〈bean:resource〉标签 341
13.2.4〈bean:include〉标签 342
13.3定义或输出JavaBean 342
13.3.1〈bean:define〉标签 344
13.3.2〈bean:size〉标签 345
13.3.3〈bean:write〉标签 346
13.4小结 347
第14章 StrutsLogic标签库 349
14.1进行比较运算的Logic标签 349
14.2进行字符串匹配的Logic标签 354
14.3判断指定内容是否存在的Logic标签 356
14.3.1〈logic:empty〉和〈logic:notEmpty〉标签 359
14.3.2〈logic:present〉和〈logic:notPresent〉标签 360
14.3.3〈logic:messagesPresent〉和〈logic:messagesNotPresent〉标签 361
14.4进行循环遍历的Logic标签 363
14.4.1遍历集合 366
14.4.2遍历Map 367
14.4.3设定被遍历的变量 369
14.5进行请求转发或重定向的Logic标签 369
14.5.1〈logic:forward〉标签 369
14.5.2〈logic:redirect〉标签 370
14.6小结 370
15.1〈nested:nest〉和〈nested:writeNesting〉标签 373
第15章 StrutsNested标签库 373
15.2〈nested:root〉标签 379
15.3和其他标签库中的标签功能相同的Nested标签 381
15.4小结 382
第16章 Tiles框架 383
16.1采用基本的JSP语句创建复合式网页 383
16.2采用JSP的include指令创建复合式网页 387
16.3采用〈tiles:insert〉标签创建复合式网页 391
16.4采用Tiles模板创建复合式网页 394
16.5采用Tiles模板和Tiles组件创建复合式网页 396
16.5.1Tiles组件的基本使用方法 397
16.5.2通过StrutsAction来调用Tiles组件 399
16.5.3Tiles组件的组合 399
16.5.4Tiles组件的扩展 402
16.6小结 403
第17章 Struts与EJB组件 405
17.1J2EE体系结构简介 405
17.2创建EJB组件 406
17.2.1编写Remote接口 407
17.2.2编写Home接口 408
17.2.3编写EnterpriseJavaBean类 408
17.3在Struts应用中访问EJB组件 413
17.3.1创建业务代理实现类NetstoreEJBDelegate 413
17.3.2运用EJBHomeFactory模式 416
17.4.1在Jboss-Tomcat上部署EJB组件 419
17.4发布J2EE应用 419
17.4.2在Jboss-Tomcat上部署Web应用 421
17.4.3在Jboss-Tomcat上部署J2EE应用 422
17.5小结 424
第18章 Struts与SOAPWeb服务 425
18.1SOAP简介 425
18.2建立ApacheAXIS环境 427
18.3创建和发布SOAP服务 428
18.3.1创建实现SOAP服务的Java类 428
18.3.2创建Web服务发布描述文件 429
18.3.3发布SOAP服务 432
18.4在Struts应用中访问SOAP服务 432
18.5小结 438
19.1Apache通用日志包概述 439
19.1.1Log接口 439
第19章 Struts与Apache通用日志包 439
19.1.2LogFactory接口 441
19.2常用的日志实现 441
19.2.1NoOpLog日志器 441
19.2.2SimpleLog日志器 442
19.2.3Log4J日志器 442
19.3配置通用日志接口 443
19.3.1准备JAR文件 443
19.3.2指定日志器 443
19.4.1配置Log4J的一般步骤 444
19.3.3设置日志器的属性 444
19.4配置Log4J 444
19.4.2Log4J的配置样例 446
19.4.3Log4J对应用性能的影响 447
19.5在Struts应用中访问通用日志接口 447
19.5.1在Action类中访问通用日志接口 448
19.5.2在JSP中访问通用日志接口 450
19.6小结 454
第20章 用ANT工具管理Struts应用 455
20.1Web应用常用的开发目录结构 455
20.2安装配置ANT 455
20.3创建build.xml文件 456
20.3.1设置公共属性 462
20.3.2设置classpath 463
20.3.3定义helptarget 463
20.3.4定义clean-alltarget 463
20.3.5定义preparetarget 464
20.3.6定义compiletarget 464
20.3.7定义buildtarget 465
20.3.8定义deploytarget 466
20.3.9定义javadoctarget 466
20.4运行ANT 466
20.4.1运行helptarget 466
20.4.2运行deploytarget 467
20.4.3运行javadoctarget 468
20.5小结 468
第21章 用StrutsTestCase测试Struts应用 469
21.1StrutsTestCase简介 469
21.2制订单元测试用例 469
21.3创建StrutsTestCase测试类 470
21.4用ANT工具运行测试程序 471
21.4.1准备必要的JAR文件 471
21.4.2在build.xml文件中定义testtarget 471
21.4.3运行测试程序 472
21.5创建包含多个单元测试用例的测试类 473
21.6小结 475
附录A Struts1.1的UML类框图 476
附录B Struts资源 477
B.1Struts邮件列表 477
B.2Struts资源Web站点 477
B.3Tiles标签库站点 477
B.4Nested标签库站点 478
B.5StrutsGUI工具 478
B.6EasyStruts工程 478
附录C 发布和运行addressbook应用 479
C.1发布addressbook应用 479
C.2运行addressbook应用 479
D.1运行netstore所需的软件 482
附录D 发布和运行netstore应用 482
D.2netstore应用的目录结构 483
D.3安装netstore数据库 484
D.4发布netstore应用 484
D.4.1在工作模式1下发布netstore应用 484
D.4.2在工作模式2下发布netstore应用 485
D.4.3在工作模式3下发布netstore应用 485
D.4.4在工作模式4下发布netstore应用 486
D.4.5在工作模式5下发布netstore应用 486
D.5运行netstore应用 487
附录E 编译本书的JavaWeb样例 491
附录F Struts1.2API的新特征 492