标题：精通Struts基于MVC的Java Web设计与开发
基本信息
作者： 孙卫琴  丛书名： 开发专家之Sun ONE
出版社：电子工业出版社
ISBN：7121000520
上架时间：2004-8-17
出版日期：2004 年8月
开本：16开
页码：512
版次：1-1
内容简介
struts是目前非常流行的基于mvc的java web框架。本书详细介绍了在最新的struts1.1以及不久将推出的struts1.2版本上设计和开发java web应用的各种技术。本书第1章到第3章为入门篇，通过两个struts应用实例，引导读者把握设计、开发和部署struts应用的整体流程，充分体会 struts框架在开放大型、可扩展的web应用方面发挥的优势。第4章到第7章深入探讨了struts框架的核心组件actionservlet和 requestprocessor的实现原理，详细介绍了开发struts应用的模型、视图和控制器的各种技术，细致的描述了struts配置文件的每个元素的使用方法。第8章到第9章介绍了开发struts应用的一些实用技术，如struts框架的扩展点、struts应用的国际化，validator 验证框架和异常处理机制等。第12章到第16章结合具体的struts应用实例，详细介绍了struts的标签库以及tiles框架的使用方法。第17章和第18章介绍如何采用ejb和web服务来实现struts框架的模型。第19章到第21章介绍了如何采用第三方软件，如apache common logging api、log4j、ant和strutstestcase，来控制struts应用的输出日志、管理以及测试struts应用项目。
作者
孙卫琴，1997年毕业于上海交通大学，随后一直从事基于Java的软件开发工作，还从事过J2EE培训和咨询。目前在美国肯特大学作为访问学者，研究课题包括基于Java和XML的电子商务系统、J2EE软件架构、Web服务和网络安全等。代表著作有：
《精通Struts: 基于MVC的Java Web设计与开发》 2004
《Tomcat与Java Web开发技术详解》2004
《Java 2认证考试指南与试题解析》 2002
目录
第1章  struts与java web应用简介        1
1.1  java web应用概述        1
1.1.1  servlet组件        2
1.1.2  jsp组件        3
1.1.3  共享数据在web应用中的范围        3
1.1.4  javabean组件及其在web应用中的范围        5
1.1.5  客户化jsp标签        5
1.1.6  ejb组件        6
1.1.7  xml语言        6
1.1.8  web服务器和应用服务器        7
1.2  web组件的三种关联关系        7
1.2.1  请求转发        7
1.2.2  请求重定向        8
1.2.3  包含        9
1.3  mvc概述        9
1.3.1  mvc设计模式        10
1.3.2  jsp model1和jsp model2        11
1.4  struts概述        13
1.4.1  struts实现mvc的机制        13
1.4.2  struts的工作流程        15
.1.5  小结        17
第2章  struts应用：helloapp应用        19
2.1  分析helloapp应用的需求        19
2.2  运用struts框架        19
2.3  创建视图组件        20
2.3.1  创建jsp文件        20
2.3.2  创建消息资源文件        23
2.3.3  创建actionform bean        23
2.3.4  数据验证        25
2.4  创建控制器组件        26
2.4.1  action类的工作机制        28
2.4.2  访问封装在messageresources中的本地化文本        28
2.4.3  业务逻辑验证        28
2.4.4  访问模型组件        29
2.4.5  向视图组件传递数据        30
2.4.6  把http请求转发给合适的视图组件        30
2.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章  struts应用的需求分析与设计        43
3.1  收集和分析应用需求        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.1  web应用的发布描述文件        71
4.1.1  web应用发布描述文件的文档类型定义（dtd）        71
4.2  为struts应用配置web.xml文件        72
4.2.1  配置struts的actionservlet        72
4.2.2  声明actionservlet的初始化参数        73
4.2.3  配置欢迎文件清单        74
4.2.4  配置错误处理        75
4.2.5  配置struts标签库        76
4.3  struts 配置文件        77
4.3.1  org.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.4  digester 组件        91
4.5  struts 控制面板工具        91
4.6  重新载入配置文件        93
4.7  小结        94
第5章  struts控制器组件        95
5.1  控制器组件的控制机制        95
5.1.1  actionservlet类        96
5.1.2  requestprocessor类        99
5.1.3  action类        105
5.2  使用内置的struts action类        112
5.2.1  org.apache.struts.actions.forwardaction类        112
5.2.2  org.apache.struts.actions.includeaction类        114
5.2.3  org.apache.struts.actions.dispatchaction类        115
5.2.4  org.apache.struts.actions.lookupdispatchaction类        118
5.2.5  org.apache.struts.actions.switchaction类        121
5.3  利用token解决重复提交        121
5.4  实用类        125
5.4.1  requestutils类        125
5.4.2  tagutils类        125
5.4.3  moduleutils类        126
5.4.4  globals类        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.1  对业务对象进行持久化的作用        135
6.4.2  数据访问对象（dao）设计模式        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.4  netstore应用的orm框架        145
6.5.5  联合使用业务代理和dao模式        155
6.6  小结        167
第7章  struts视图组件        169
7.1  视图概述        169
7.2  在视图中使用javabean        170
7.2.1  dto数据传输对象        170
7.2.2  struts框架提供的dto：actionform bean         171
7.3  使用actionform         172
7.3.1  actionform的生命周期         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.3  访问动态actionform         187
7.4.4  动态actionform的表单验证         187
7.4.5  在netstore应用中使用动态actionform         187
7.5  小结         189
第8章  扩展struts框架         191
8.1  struts插件（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.2  web应用的中文本地化         206
9.2.1  处理http请求数据编码         207
9.2.2  处理数据库数据编码         207
9.2.3  处理xml配置文件编码         207
9.2.4  处理响应结果的编码         208
9.3  java对i18n的支持         208
9.3.1  locale类         208
9.3.2  resourcebundle类         214
9.3.3  messageformat类和复合消息         214
9.4  struts框架对国际化的支持         216
9.4.1  创建struts的resource bundle         216
9.4.2  访问resource bundle         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
第10章  validator验证框架         229
10.1  安装和配置validator框架         229
10.1.1  validator-rules.xml文件         229
10.1.2  validation.xml文件         233
10.1.3  validator插件         237
10.2  validator框架和actionform         238
10.3  validator框架和struts客户化标签         240
10.4  在netstore应用中使用validator框架         241
10.5  创建自定义的验证规则         245
10.6  在validator框架中使用javascript         247
10.7  validator框架的国际化         250
10.8  小结         251
第11章  异常处理         253
11.1  java异常处理         253
11.1.1  java异常         253
11.1.2  jvm的方法调用堆栈         254
11.1.3  异常处理对性能的影响         255
11.1.4  系统异常和应用异常         256
11.1.5  使用异常链         256
11.1.6  处理多样化异常         258
11.2  struts框架异常处理机制概述         260
11.3  struts框架异常处理机制的细节         261
11.3.1  java web容器处理异常的机制         261
11.3.2  actionservlet类处理异常的机制         261
11.3.3  requestprocessor类处理异常的机制         262
11.3.4  exceptionhandler类处理异常的机制         263
11.4  在struts应用中处理异常的各种方式         266
11.4.1  创建异常类         266
11.4.2  由java web容器捕获异常         269
11.4.3  以配置方式处理异常         271
11.4.4  以编程方式处理异常         277
11.5  小结         282
第12章  struts html标签库         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  在actionform bean中设定formfile属性         319
12.5.3  在action类中处理文件上传         319
12.6  [html:errors]标签         320
12.6.1  错误消息的来源         324
12.6.2  格式化地显示错误消息         326
12.6.3  [html:errors]标签的用法         326
12.7  [html:messages]标签         328
12.8  小结         330
第13章  struts bean标签库         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.2  [bean:resource]标签         341
13.2.3  [bean:struts]标签         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章  struts logic标签库         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章  struts nested标签库         373
15.1  [nested:nest]和[nested:writenesting]标签         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.1  tiles组件的基本使用方法         397
16.5.2  通过struts action来调用tiles组件         399
16.5.3  tiles组件的组合         399
16.5.4  tiles组件的扩展         402
16.6  小结         403
第17章  struts与ejb组件         405
17.1  j2ee体系结构简介         405
17.2  创建ejb组件         406
17.2.1  编写remote接口         407
17.2.2  编写home接口         408
17.2.3  编写enterprise java bean类         408
17.3  在struts应用中访问ejb组件         413
17.3.1  创建业务代理实现类netstoreejbdelegate         413
17.3.2  运用ejbhomefactory模式         416
17.4  发布j2ee应用         419
17.4.1  在jboss-tomcat上部署ejb组件         419
17.4.2  在jboss-tomcat上部署web应用         421
17.4.3  在jboss-tomcat上部署j2ee应用         422
17.5  小结         424
第18章  struts与soap web服务         425
18.1  soap简介         425
18.2  建立apache axis环境         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章  struts与apache通用日志包         439
19.1  apache通用日志包概述         439
19.1.1  log接口         439
19.1.2  logfactory接口         441
19.2  常用的日志实现         441
19.2.1  nooplog日志器         441
19.2.2  simplelog日志器         442
19.2.3  log4j日志器         442
19.3  配置通用日志接口         443
19.3.1  准备jar文件         443
19.3.2  指定日志器         443
19.3.3  设置日志器的属性         444
19.4  配置log4j         444
19.4.1  配置log4j的一般步骤         444
19.4.2  log4j的配置样例         446
19.4.3  log4j对应用性能的影响         447
19.5  在struts应用中访问通用日志接口         447
19.5.1  在action类中访问通用日志接口         448
19.5.2  在jsp中访问通用日志接口         450
19.6  小结         454
第20章  用ant工具管理struts应用         455
20.1  web应用常用的开发目录结构         455
20.2  安装配置ant         455
20.3  创建build.xml文件         456
20.3.1  设置公共属性         462
20.3.2  设置classpath         463
20.3.3  定义help target         463
20.3.4  定义clean-all target        463
20.3.5  定义prepare target         464
20.3.6  定义compile target         464
20.3.7  定义build target         465
20.3.8  定义deploy target         466
20.3.9  定义javadoc target         466
20.4  运行ant         466
20.4.1  运行help target         466
20.4.2  运行deploy target         467
20.4.3  运行javadoc target         468
20.5  小结        468
第21章  用strutstestcase测试struts应用         469
21.1  strutstestcase简介         469
21.2  制订单元测试用例         469
21.3  创建strutstestcase测试类         470
21.4  用ant工具运行测试程序         471
21.4.1  准备必要的jar文件         471
21.4.2  在build.xml文件中定义test target         471
21.4.3  运行测试程序         472
21.5  创建包含多个单元测试用例的测试类         473
21.6  小结         475
附录a  struts1.1的uml类框图         476
附录b  struts资源        477
b.1  struts邮件列表        477
b.2  struts资源web站点        477
b.3  tiles标签库站点        477
b.4  nested 标签库站点        478
b.5  struts gui工具        478
b.6  easy struts 工程        478
附录c  发布和运行addressbook应用        479
c.1  发布addressbook应用        479
c.2  运行addressbook应用        479
附录d  发布和运行netstore应用        482
d.1  运行netstore所需的软件        482
d.2  netstore应用的目录结构        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  编译本书的java web样例         491
附录f  struts 1.2 api的新特征        492