深入解析SpringMVC与WebFlow
本书是Spring MVC 和Web Flow 两个框架的权威指南,书中包括的技巧和提示可以让你从这个灵活的框架中汲取尽可能多的信息。书中包含了一些开发良好设计和解耦的Web 应用程序的最佳实践,介绍了Spring 框架中的Spring MVC 和Spring Web Flow,以及着重介绍利用Spring 框架和Spring MVC 编写Web 应用程序的最佳方法。本书还介绍了Spring 框架的设计模式,以及如何将同样的设计和技术应用到读者自己的代码中。本书适合各层次Spring Web 程序员阅读。
目录
图书信息目录前言
图书信息书名: 深入解析Spring MVC与Web Flow
书号: 978-7-115-16973-0/TP
原书名: Expert Spring MVC and Web Flow
原出版社: Apress
丛书名: 图灵程序设计丛书
分类: 计算机 >> Web编程与设计 >> Web服务
作者: Darren Davison, Steven Devijver, Seth Ladd
译者: 徐哲 沈艳
出版日期: 2008-09-27
语种: 简体中文
开本: 16开
页数: 344
目录第1章 概述 1
1.1 阅读顺序 2
1.2 本书纵览 2
1.3 导引 2
1.4 读者对象 3
1.5 进一步的资源 4
1.6 升级到Spring的新版本 5
1.7 本章小结 6
第2章 Spring框架 7
2.1 控制反转 7
2.1.1 控制反转实例 7
2.1.2 小结 10
2.2 依赖注入 10
2.2.1 Service Locator模式 12
2.2.2 依赖注入 13
2.3 Spring的ApplicationContext 15
2.4 POJO归来 16
2.5 对Web应用程序的影响 17
2.6 本章小结 17
第3章 Spring MVC应用程序架构 18
3.1 抽象层 18
3.1.1 层隔离 19
3.1.2 Java接口作为层的约定 20
3.1.3 Spring MVC应用程序中的层 21
3.2 选择:条条大路通罗马 32
3.3 本章小结 33
第4章 Spring MVC初体验 34
4.1 用例 34
4.1.1 服务接口 34
4.1.2 用例1 35
4.1.3 用例2 37
4.1.4 小结 42
4.2 Web组件 42
4.2.1 JAR依赖 42
4.2.2 Controller类 43
4.2.3 View类 44
4.2.4 ModelAndView类 44
4.3 构建主页用例 44
4.3.1 Spring MVC 组件 44
4.3.2 Web应用程序配置 49
4.3.3 启动应用程序 52
4.3.4 请求处理顺序 53
4.3.5 小结 54
4.4 构建航班搜索用例 55
4.4.1 SimpleFormController 55
4.4.2 SearchFlightsController 56
4.4.3 表单视图 59
4.4.4 Spring JSP标签 61
4.4.5 成功视图 62
4.4.6 小结 63
4.5 整装待发 64
第5章 处理管道 65
5.1 处理请求 65
5.1.1 请求工作流 65
5.1.2 功能概览 65
5.1.3 处理请求的各组件 67
5.2 本章小结 97
第6章 深入解析Controller 98
6.1概述 98
6.2Controller接口和实现 99
6.2.1设计初探 99
6.2.2AbstractController 100
6.2.3BaseCommandController 104
6.2.4绑定表单到bean 105
6.2.5SimpleFormController和处理表单 128
6.2.6Redirect After Submit模式 142
6.2.7MultiActionController 145
6.2.8AbstractWizardFormController 153
6.2.9ThrowawayController 168
6.2.10ValidatableThrowaway-Controller 170
6.3HandlerInterceptor 171
6.3.1HandlerInterceptor示例 172
6.3.2小结 173
6.4本章小结 173
第7章 视图层 175
7.1视图中包含什么 175
7.2Spring的视图接口 176
7.2.1实现视图 177
7.2.2View和Controller:愉快的分离 180
7.3ViewResolver 181
7.3.1在上下文中解析视图 182
7.3.2ViewResolver的类型 183
7.3.3使Dispatcher知道ViewResolver 186
7.4重定向简述 187
7.5主题 188
7.5.1ThemeSource 189
7.5.2ThemeResolver 190
7.6视图层的国际化 190
7.6.1区域解析 191
7.6.2MessageSource Bean 191
7.6.3视图解析 192
7.6.4主题解析 192
7.7绑定支持 193
7.7.1绑定和验证顺序的概述 193
7.7.2视图模板的绑定支持 193
7.8本章小结 193
第8章 受支持的视图类型 194
8.1JSP和JSTL 194
8.1.1模型暴露为请求属性 195
8.1.2展示模型 196
8.1.3JSP标签库 197
8.1.4表单 198
8.2Tiles 202
8.3Velocity和FreeMarker 204
8.3.1模板的优点和缺点 205
8.3.2模板引擎的基本配置 205
8.3.3暴露模型 206
8.3.4模板语言 207
8.3.5高级配置选项 208
8.3.6表单和SpringBind宏 209
8.3.7数字和日期工具 215
8.3.8附加的Velocity视图 216
8.3.9小结 216
8.4XML和XSLT 217
8.4.1定义XSLT视图 217
8.4.2转化XML源代码 219
8.4.3返回原始状态的XML 220
8.4.4XSLT的其他显著功能 221
8.4.5小结 222
8.5PDF 222
8.5.1配置应用程序以使用PDF视图 223
8.5.2用FOP创建模板PDF 224
8.6Excel 224
8.6.1创建模板 224
8.6.2编程 225
8.6.3配置应用程序 225
8.7JasperReports 226
8.7.1多种形式的视图 227
8.7.2填充报表 228
8.7.3小结 229
8.8创建新视图 229
8.9本章小结 229
第9章 验证 230
9.1 编程式Validator 230
9.2 声明式Validator 231
9.3 消息源 241
9.4 Validator和业务逻辑 242
9.5 Errors接口 243
9.6 测试验证器 244
9.7 本章小结 245
第10章 测试Spring MVC应用程序 246
10.1 概览 246
10.1.1 单元测试 246
10.1.2 单元测试小结 262
10.1.3 集成测试 263
10.2 测试小结 267
第11章 Spring Web Flow入门 268
11.1 Spring Web Flow的动机 268
11.1.1 servlet规范的问题 268
11.1.2 解决方案 270
11.2 不是万能钥匙 272
11.3 总览 272
11.3.1 架构概览 272
11.3.2 Spring Web Flow系统内部 273
11.3.3 不同的作用域 273
11.3.4 组成 274
11.4 第一个流 276
11.4.1 安装Spring Web Flow 276
11.4.2 提出流目录结构 276
11.4.3 Purchase Product流定义 277
11.4.4 实现第一步:视图状态 277
11.4.5 过渡 277
11.4.6 动作 278
11.4.7 Action bean定义 279
11.4.8 测试流执行 280
11.4.9 扩展AbstractFlowExecution-Tests 281
11.4.10 决定状态 282
11.4.11 动作状态 283
11.4.12 结束状态 284
11.4.13 Purchase Product流:接下来做什么 285
11.4.14 Spring MVC部署 285
11.4.15 FlowController 286
11.4.16 FlowRegistry 286
11.4.17 附加配置 286
11.4.18 视图模板解析 287
11.4.19 视图模板要求 287
11.4.20 从浏览器中启动流 288
11.5 本章小结 288
11.5.1 模型对话 289
11.5.2 允许扩展 289
11.5.3 可测试 289
11.5.4 鉴别流(简单而自然的语言) 289
第12章 高级Spring Web Flow 290
12.1 业务逻辑和流 290
12.2 流粒度 291
12.2.1 子流 291
12.2.2 内嵌流 297
12.2.3 小结 299
12.3 管理FlowExecutions 299
12.3.1 与Web框架集成 299
12.3.2 FlowExecutionManager 301
12.3.3 FlowExecution 301
12.3.4 FlowExecutionListener 304
12.4 FlowExecution仓库 306
12.4.1 延续键 306
12.4.2 FlowExecutionRepository实现 308
12.4.3 有状态FlowExecution仓库 309
12.4.4 无状态FlowExecution仓库 309
12.4.5 完成后对话失效 310
12.5 再次访问的状态和过渡 310
12.5.1 动作状态 311
12.5.2 POJO动作 313
12.5.3 暴露POJO方法返回值 314
12.5.4 使用视图状态和结束状态定制视图选择 314
12.5.5 决定状态 316
12.6 异常处理 317
12.7 异常处理小结 319
12.8 本章小结 320
附录A MVC应用程序的文档 321
A.1 BeanDoc 321
A.1.1 安装和构建BeanDoc 321
A.1.2 在配置文件上运行BeanDoc 322
A.1.3 其他选项 323
A.1.4 控制输出 324
A.2 小结 324
附录B Ajax和DWR 325
B.1 Spring和DWR 325
B.2 应用的示例 326
B.2.1 配置和代码改变 326
B.2.2 介绍文件改变 328
B.3 无障碍 333
前言Spring MVC和Spring Web Flow是Spring的开发人员和社区为我们带来的两个非常灵活和强大的两个Web框架。Spring MVC是一个构建于Spring Framework之上的现代Web应用程序框架;而Spring Web Flow则是一个现在已经独立于Spring Framework之外、用于配合Spring MVC的新项目,主要用于构建可重用的封装了丰富的页面导航规则的Web控制器模块。本书深入探讨了这两个框架。除了详细分析代码及其功能之外,我们还穿插了与这两个框架以及一般意义上的Web开发相关的大量技巧。
我们写作本书的目的是告诉读者如何最大程度地发挥出这两个框架的潜力。在本书的帮助下,你可以更清楚地研究源代码,加深对框架的理解,开发出高质量的应用程序。
我们在开发Spring MVC和Spring Web Flow时充分运用了设计模式和许多面向对象的专家技术。本书不仅将解释我们设计这两个框架时的许多设计决策是如何做出的,而且还会告诉读者如何在自己的项目中应用类似的设计思路和技巧。
我们花费了不少心血,力图讲清楚Spring MVC和Spring Web Flow两个框架的每个细节,给读者建立大局观。除了它们最著名的特性之外,我们还讲述了许多不为人知的技术亮点。但是我们深知,框架不可能解决所有问题,所以还详细探讨了如何正确和安全地扩展框架,得到灵活、更符合客户需求的解决方案。
无论你是初学者,还是专家,通过本书,你可以更加自信地投入到Spring Web应用的开发中去。
致谢
一本书仅靠作者是不可能完成的,它是很多人的专业知识、辛勤劳动、宝贵时间和超常努力的成果。本书应归功于参与其事的每个人。
首先我要感谢我的妻子,一个拥有天使般耐心的人。她的爱和支持陪伴我写作的始终。
我也要感谢我的合著者,因为他们贡献了独特而无价的知识和洞察力,从而产生了比我单独创作更出色的著作。感谢Darren、Steven、Keith和Colin!
如果没有Apress出版社编辑们的才干和专业知识,这本书不可能面世。具体地说,我衷心感谢Sofia Marchant和Beckie Brand协调各部门,并尽最大努力确保本书做到最好。我要特别感谢Stephanie Provines,没有她的帮助,我们将很难完成Spring MVC的相关内容。她对细节的关注令人印象深刻,而且极具价值。我也要特别感谢Steve Anglin给了我这个机会。对于未提及的其他所有人,我永远感谢你们。
我很高兴由Rob Harrop 来做本书的技术审稿人。他的建议总是准确有用而且专业。谢谢你,Rob,我很荣幸有你作为这个团队的一份子。
谢谢Erwin Vervaet、Dan Leuck和Colin Sampaleanu在审阅本书时提出的专业建议。谢谢Kathleen Fitzgerald的拍摄。最后,谢谢Spring框架的开发者和社区,从他们那里我学到了极其多的关于软件开发的知识。