Struts In Action
使用领先的Java框架构建Web应用
中文版
Ted Husted 著
Eric Liu(铁手) 译
Struts in Action 中文版 Lastest Revised:10/14/2005 10:27:00 AM
Translated By: Eric Liu(铁手)
shqlau@hotmail.com(MSN) 第 2 页
http://www.blogjava.net/steelhand
目 录
1. 介绍 .........................................................................................................18
1.1. 关于本书...............................................................................................................19
1.1.1. 谁创建了 Struts?...................................................................................................19
1.1.2. 为什么 Struts 要开源?.........................................................................................19
1.1.3. 为什么叫 Struts?...................................................................................................19
1.1.4. 落到实处............................................................................................................... 27
1.1.5. 再看看...................................................................................................................34
1.2. 小结.......................................................................................................................36
2. 深入 STRUTS 架构..................................................................................37
2.1. 随便谈谈...............................................................................................................38
2.2. 为什么我们需要 Struts .......................................................................................38
2.2.1. 退一进三............................................................................................................... 38
2.2.2. 进入 Struts ...........................................................................................................39
2.2.3. Struts 控制器组件 ................................................................................................39
2.2.4. 用 Struts 开发 Web 应用 ...................................................................................... 42
2.3. 为什么需要框架...................................................................................................43
2.3.1. Web—永无休止的修补........................................................................................43
2.3.2. Servlet 解决方案 .................................................................................................44
2.3.3. Servlet 框架 .........................................................................................................44
2.3.4. 黑盒-白盒统一体 ................................................................................................. 45
2.4. Struts, Model 2,以及 MVC................................................................................46
2.4.1. MVC 的演化.........................................................................................................46
2.4.2. Model 2 的出现 .................................................................................................... 47
2.4.3. 应用层—视图之间的去耦合...............................................................................47
2.4.4. Struts 如何实现 Model 2, MVC, 和分层 ............................................................49
2.5. Struts 控制流 ......................................................................................................50
2.5.1. 总图.......................................................................................................................51
2.5.2. 出色的细节...........................................................................................................52
2.5.3. Struts 是富有效率的吗?......................................................................................54
2.6. Struts 的长处和弱点 ...........................................................................................55
2.6.1. 弱点.......................................................................................................................56
2.6.2. Struts 的强项 ........................................................................................................ 58
Struts in Action 中文版 Lastest Revised:10/14/2005 10:27:00 AM
Translated By: Eric Liu(铁手)
shqlau@hotmail.com(MSN) 第 3 页
http://www.blogjava.net/steelhand
2.7. 小结.......................................................................................................................59
3. 构建一个简单应用....................................................................................60
3.1. 被支柱支撑的支柱...............................................................................................61
3.1.1. 为什么选择 logon 应用? .....................................................................................61
3.2. 漫游 logon 应用 ...................................................................................................62
3.2.1. 从这里开始...........................................................................................................62
3.2.2. 我们看到的屏幕...................................................................................................62
3.2.3. 欢迎屏幕............................................................................................................... 63
3.2.4. 登录屏幕............................................................................................................... 63
3.2.5. 重新显示欢迎屏幕...............................................................................................65
3.2.6. 欢迎屏幕,再见...................................................................................................65
3.2.7. 所使用的特征.......................................................................................................66
3.3. 解剖 logon 应用 .................................................................................................66
3.3.1. 欢迎屏幕的浏览器代码....................................................................................... 66
3.3.2. 欢迎页面的 JSP 源代码.......................................................................................67
3.3.3. Welcome 屏幕的配置源代码...............................................................................70
3.3.4. logon 屏幕的浏览器代码....................................................................................70
3.3.5. logon 的配置源代码............................................................................................73
3.3.6. LogonSubmit 配置................................................................................................74
3.3.7. LogonForm 源代码..............................................................................................75
3.3.8. LogonAction 源代码 ...........................................................................................77
3.3.9. LogoffAction 源代码........................................................................................... 83
3.4. 构造应用...............................................................................................................86
3.4.1. 定义需求............................................................................................................... 86
3.4.2. 规划应用............................................................................................................... 87
3.4.3. 规划源代码树.......................................................................................................89
3.4.4. 设置开发工具.......................................................................................................90
3.4.5. 设置 build.xml 文件 ............................................................................................91
3.4.6. 设置 web.xml 文件...............................................................................................91
3.4.7. 设置 struts-config.xml 文件 ...............................................................................91
3.4.8. 测试部署情况.......................................................................................................93
3.4.9. 构造欢迎页面.......................................................................................................95
3.4.10. 构造 logon 页面...................................................................................................97
3.4.11. 构造 Constants 类.................................................................................................98
Struts in Action 中文版 Lastest Revised:10/14/2005 10:27:00 AM
Translated By: Eric Liu(铁手)
shqlau@hotmail.com(MSN) 第 4 页
http://www.blogjava.net/steelhand
3.4.12. 构造其他类.........................................................................................................100
3.4.13. 创建 user directory..............................................................................................100
3.4.14. 配置 ActionErrors...............................................................................................101
3.4.15. 编译并测试 logon 页面..................................................................................... 101
3.4.16. 修改 welcome 页面 ............................................................................................102
3.4.17. Struts ForwardAction Action...............................................................................104
3.5. 小结.....................................................................................................................105
4. 配置 STRUTS 组件................................................................................106
4.1. 三个 XML 文件和一个属性文件 ....................................................................107
4.1.1. 家族的其他人员.................................................................................................107
4.2. Web 应用部署描述符........................................................................................107
4.2.1. Web.xml 文件 .................................................................................................... 107
4.2.2. ActionServlet 的参数......................................................................................... 110
4.3. Struts 配置 .........................................................................................................112
4.3.1. 细节, 更多细节.................................................................................................. 113
4.3.2. 变更管理............................................................................................................. 114
4.3.3. 受保护的变更原则............................................................................................. 115
4.4. Struts 配置元素 .................................................................................................115
4.4.1. <global-exceptions>............................................................................................ 117
4.4.2. <form-beans>...................................................................................................... 118
4.4.3. <global-forwards>............................................................................................... 118
4.4.4. <action-mappings>.............................................................................................. 119
4.4.5. <Controller>........................................................................................................120
4.4.6. <message-resources> ..........................................................................................121
4.4.7. <plug-in>.............................................................................................................121
4.4.8. <data-sources> ....................................................................................................122
4.4.9. 该你了................................................................................................................. 123
4.4.10. Struts config 骨架 .............................................................................................. 123
4.5. 应用资源文件.....................................................................................................125
4.6. Ant 构建文件 .....................................................................................................127
4.7. 配置 Struts 核心 ..............................................................................................129
4.7.1. 安装 Java 和 Java servlet 容器........................................................................130
4.7.2. 安装开发环境.....................................................................................................130
4.7.3. 安装 Struts 核心文件.........................................................................................130
4.7.4. 配置 Tiles 框架................................................................................................... 130
Struts in Action 中文版 Lastest Revised:10/14/2005 10:27:00 AM
Translated By: Eric Liu(铁手)
shqlau@hotmail.com(MSN) 第 5 页
http://www.blogjava.net/steelhand
4.8. 配置 Struts Validator.........................................................................................132
4.9. 从空白 Struts 应用开始 ....................................................................................134
4.10. 配置模块化应用.................................................................................................135
4.10.1. 分而治之.............................................................................................................136
4.10.2. 给页面加前缀.....................................................................................................137
4.10.3. 修改配置.............................................................................................................138
4.10.4. 共享 Struts JAR .................................................................................................. 138
4.11. 小结.....................................................................................................................138
5. 用 ACTIONFORM 传递数据...................................................................140
5.1. 吃的是草,挤出的是奶.....................................................................................141
5.1.1. ActionForm 的要求 ...........................................................................................142
5.2. 千面女郎 ActionForm......................................................................................143
5.2.1. ActionForm 作为字段收集器 ...........................................................................143
5.2.2. ActionForm 作为数据缓冲 ............................................................................... 145
5.2.3. ActionForm 作为数据校验器 ...........................................................................145
5.2.4. ActionForm 作为类型转换器 ...........................................................................146
5.2.5. ActionForm 作为传输对象(TO) .................................................................. 146
5.2.6. ActionForm 作为防火墙 ................................................................................... 147
5.3. ActionForm 设计推论.......................................................................................147
5.3.1. ActionForm 可以共享名称 ................................................................................ 147
5.3.2. ActionForm 可以最小化用户代码 ....................................................................148
5.3.3. ActionForm 可以封装 Helper ............................................................................148
5.3.4. ActionForm 可以嵌套其它 bean........................................................................148
5.4. ActionForm 的风情..........................................................................................150
5.4.1. Map 支持(Map-backed)的 ActionForm ........................................................150
5.4.2. DynaActionForm.................................................................................................151
5.5. 关于 ActionForm 的疑问..................................................................................152
5.5.1. 为什么 ActionForm 不仅仅是一个 Map? .........................................................152
5.5.2. 为什么 ActionForm 不是一个普通 JavaBean? ................................................152
5.5.3. 为什么 ActionForm 不是一个接口?..................................................................153
5.6. 小结 ActionForm...............................................................................................153
5.6.1. 实现业务层接口.................................................................................................155
5.6.2. 嵌套可变值对象.................................................................................................156
5.6.3. 设置不可变值对象.............................................................................................156
5.6.4. 设置可变值对象.................................................................................................158