Spring MVC Cookbook中文版
  • 推荐2
  • 收藏6
  • 浏览3.7K

Spring MVC Cookbook中文版

Alex Bretet (作者)  张龙 (译者)

  • 书  号:978-7-121-31111-6
  • 出版日期:2017-04-05
  • 页  数:400
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Spring MVC Cookbook
  • 原书号:9781784396411
  • 维护人:张春雨
本书由浅入深地介绍了当今流行的Java Web框架Spring MVC的方方面面,从基础的环境搭建到微服务设计与架构,再到持久化、REST API构建、认证与测试……涵盖了Spring MVC诸多重要且常用的特性。值得一提的是,本书针对Spring MVC的每一项特性都提供了完整可运行的示例代码,可以帮助读者更好地掌握这项技术。
无论是Spring MVC的初学者,还是拥有一定经验的开发人员,都能够从本书中获得启发,更好地理解Spring MVC这一Web开发“利器”。
超过40个实战案例
基于Spring MVC创建云就绪Java Web应用程序
译者序
毋庸置疑, Spring现在已经成为 Java企业级开发事实上的标准。同时, Spring也早已从最初的单一 IoC与 AOP框架发展成为一站式的开发平台,例如流行的 Spring Batch、Spring Boot、Spring Cloud、Spring Data、Spring Security及 Spring Kafka等。围绕着 Spring的生态圈也异常繁荣。在 Spring所提供的诸多基础项目中, Spring MVC可谓一枝独秀。虽然相较于 Struts、JSF等 Java Web框架与标准,Spring MVC出现时间较晚,但凭借着 Spring强大的社区与开发者的支持, Spring MVC现已在全世界各大互联网公司与传统企业中得到了极为广泛的应用,其发展势头要远远超过其他先行者。这与 Spring MVC向开发者所提供的各项“开箱即用”特性、对于 Web开发的强有力支持以及与 Spring框架的天然整合是密不可分的。
本书是一本专门介绍 Spring MVC的专著,由浅入深地介绍了 Spring MVC方方面面的功能与特性,从一开始的环境搭建到微服务设计与架构,再到持久化、 REST API构建、认证、对 WebSockets与 STOMP的支持以及测试……详尽介绍了 Spring MVC在软件开发各个领域的应用与实现。
全书共分为 9章,每章都单独讲述一个主题,因此并不要求读者按照顺序逐章阅读;相反,读者可以根据自身情况选择感兴趣的章节阅读并学习。对于缺乏 Spring MVC经验的开发者来说,建议从第 1章开始按照顺序学习,以实现最好的学习效果。
Spring MVC本身是个庞杂的主题,这是因为框架本身涉及了太多的领域与设计理念,对于初学者来说难免陷入具体细节而无法脱身。本书独辟蹊径,从功能角度对全书章节进行划分,每章讲解 Spring MVC所支持的一个重要概念与领域。通过这种方式,学习者可以有针对性地学习 Spring MVC所提供的方方面面的特性。此外,本书的另一个特色是示例代码丰富,每个主题均提供相关可运行的示例代码供读者学习与参考,这是一种非常棒的学习方式。而且,很多章节最后还提供了延伸内容供学习者进一步提升水平。相信通过循序渐进的学习,当阅读完本书并实现书中所提供的各项示例代码后,读者会完全掌握 Spring MVC的各项功能特性并能投入到实际的项目开发中。值得一提的是,除了 Spring MVC之外,本书还对其他相关的技术领域进行了较为详尽的介绍,例如 Angular、Bootstrap、WebSockets、测试等,这些都是使用 Spring MVC进行项目开发时或多或少会使用到的一些技术与框架。相信通过对这些技术的学习,读者所掌握的技能将会超越 Spring MVC本身。翻译技术图书是一项艰苦的劳动,这不仅涉及大量脑力的付出,还有体力上的消耗。作为译者,我们最大的心愿就是为读者提供准确的翻译,为读者带来切实的帮助。这个目标也在翻译过程中不断提醒着我们,要对得起原书作者的倾情创作,要对得起各位读者的信任。因此,我们在整个翻译过程中,丝毫不敢懈怠,目的就是为了保证译稿的质量。本书由张龙、丁涛、李哲与覃璐共同翻译完成,张龙完成了最后的统稿与校对工作。这里要特别感谢电子工业出版社的张春雨老师与刘舫老师,二位老师在专业素养与团队协作方面展现出了极高的专业性,确保了本书的翻译工作能够顺利完成。每次与二位老师沟通都非常顺畅,同时进一步确保了译稿的质量。虽已尽心尽力,奈何技术与文字水平有限;虽已校对多次,但依然不敢保证全书没有任何错误。因此,读者在阅读本书的过程中如果发现任何问题都请不吝赐教。可以通过邮箱 zhanglong217@163.com与译者联系,以期图书再版时改进。最后,衷心期望本书能给希望系统学习 Spring MVC的读者朋友们带来切实的帮助,帮助大家快速掌握这一流行的 Java Web开发框架。
张龙2017-02-15于北京
致谢
首先,我要对与本书直接相关的所有人表示感谢,这包括所有审校者、内容编辑、技术与组稿编辑等。
我想到了曾经就读的法语工程学院以及在那里遇到的人们,他们对于技术展现出了浓厚的热情。
非常高兴能从事 IT行业。感谢身边支持我在这个方向发展的所有人和物。当我在这个领域的兴趣不断增长时,我真的没想到自己会从事这个职业。
编写这本书是一个旷日持久的项目。必须要提一下我的搭档 Helena,感谢她在这几个月的时间内的耐心以及对我的支持;我的家人与朋友们不断鼓励我;我的父亲则是我的灵感之源。
最深的感谢要献给出版社,感谢他们出版了这本书并认可这个项目。感谢来自于 Pivotal Software, Inc与 Spring社区的工程师们所给出的专家建议,感谢他们提供的易读的文档与官方参考。
最后,我想要感谢正在阅读这些文字并且可能已经购买了本书的你们,我希望这本书能给你们带来切实的帮助。

关于审校者
David Mendoza是一位软件工程师,他从 1999年就开始从事 Java Web开发了。他的开发之路始于 JSP与 Servlet,并创建了自定义的 Web框架。后来他发现了 AppFuse,这将其带入 Spring与 Struts的世界。接下来,他又转向了 Spring MVC并且再也不想回到过去了。作为一名 Java顾问, David的足迹遍及墨西哥、美国、加拿大、委内瑞拉、西班牙等国家,与荷兰国际银行、花旗集团及西班牙电信公司都有过合作。他目前供职于西南复临大学,这是一家位于得克萨斯州达拉斯南部的私立大学,他主要负责整个 Web平台的建设工作。

前言
欢迎阅读这本独一无二的《Spring MVC实战》,希望你已经为本书的探索之旅做好了准备,本书会带你畅游现代 Spring Web开发实践。本书作者已经创建了 cloudstreetmarket.com网站,这是一个带有社交功能的股票交易平台,本书将会带领你探索网站开发过程的每一步。

1 企业级 Spring应用的搭建
本章介绍了业界的一套标准实践,从配置 Eclipse IDE以对 Java 8、Tomcat 8、GIT与 Maven提供更优化的支持,到理解 Maven作为一个构建自动化工具以及作为一个依赖管理工具的认识,阅读本章后你将会了解如何在一个坚实的基础上部署 Spring框架。
无论一个项目旨在成为一个能够获得丰厚利润的产品,抑或仅仅是一个练习,都是从相同的企业级模式开始的。
本章并不仅仅是开发 Cloud Street Market应用的第一个阶段,还为面向企业级 Spring应用的开发者提供了大量的标准化实践。
2 使用 Spring MVC设计微服务架构
本章内容有些多,介绍了 Spring MVC的核心原则,比如请求流与 DispatcherServlet的中心角色,还介绍了如何通过与控制器相关的注解来配置 Spring MVC控制器与控制器方法处理器。
在微服务架构的搭建过程中,我们在各个模块与 Web项目中安装了 Spring与 Spring MVC,用于构建易于部署且可伸缩的功能性单元。从这个视角来看,我们通过一个 Web模块来构建应用,该模块负责提供一个 Twitter Bootstrap模板,同时与另一个专门用作 REST Web Services的 Web模块搭配使用。
本章将介绍如何通过 JSTL将模型从控制器传递给 JSP视图,以及如何通过 AngularJS来设计 JavaScript MVC模式。
3 Java持久化与实体
本章介绍了持久化相关的内容。在这个阶段,了解如何在 Spring生态圈以及 Spring MVC应用中处理持久化数据很有必要。该章将介绍如何在 Spring中通过 dataSource与 entityManagerFactory来配置 JPA持久化提供者( Hibernate)。你将学习如何从 EJB3实体来构建好处极多的 JPA对象关系映射,接下来会学习如何通过 Spring Data JPA来查询仓库。
4 为无状态架构构建 REST API
本章揭示了如何将 Spring MVC作为 REST Web Services引擎。我们将会看到框架对此所提供的令人惊叹的支持,只需为抽象的与 Web相关的逻辑的方法处理器提供几个注解即可,这样我们就可以将主要精力放在业务上了。这个原则也用在了请求绑定(参数、 URL路径与头信息绑定等)与响应编排注解方面,同时在 Spring Data的集成支持上也用到了。
本章还介绍了如何创建作为 Spring MVC一部分的异常处理器来将预定义的异常类型转换为通用的错误响应。你将学到如何配置内容协商(这是 REST APIs的重要内容),最后还将学习如何通过 Swagger与 Swagger UI来公开并文档化 REST端点信息。
5 使用 Spring MVC进行认证
本章介绍了如何在控制器与服务层对 HTTP BASIC与 OAuth2等标准协议配置认证。你将学习与 Spring Security相关的几个概念与实践,例如过滤器链、 命名空间、认证管理器,以及角色与用户的管理等。我们的 OAuth2流是个客户端实现。我们在用户首次使用第三方提供者 Yahoo! 时在应用中对其进行认证。这些 Yahoo! 的认证与连接信息稍后会被用于从 Yahoo! Finance中拉取最新的财经数据。借助于 Spring Social库,我们可以在后台对 OAuth2实现完全的抽象化。
6 实现 HATEOAS
本章介绍了如何将 RESTful Spring MVC API更进一步。超媒体驱动的应用为每个单独的请求资源都提供了链接,这些链接反映了相关资源的 URL。它们向客户端(无论是何种类型的客户端)提供了实时的导航选择—精确的文档,同时也是实际的实现。该章将会介绍如何通过 JPA实体关联或控制器层来构建这种链接。
7 开发 CRUD操作与校验
本章介绍更加高级的 Spring MVC概念,通过认识支持交互式 HTTP方法( PUT、POST 与 DELETE)的工具与技术,我们将学习如何使用 HTTP1/1规范( RFC 7231语义与内容)来返回恰当的响应状态码与头信息。
本章通过 Spring Validator与 ValidationUtils辅助类的搭配使用来提供与验证相关的 JSR-303和 JSR-349规范的兼容实现。该章的最后一节将会介绍消息与内容的国际化( I18N)。我们还通过 AngularJS提供了一个客户端实现,使用了已发布的国际化 Web Services。
8 通过 WebSocket与 STOMP进行通信
本章将会聚焦于“冉冉升起”的 WebSocket技术,并为我们的应用构建面向消息的中间件。该章提供了一个大家很少会见到的示例,通过 Spring实现了关于 WebSockets的大部分内容,从默认的嵌入式 WebSocket消息代理的使用,到特性完备的外部代理(借助于 STOMP与 AMQP协议)。我们将会了解如何向多个客户端广播消息,以及如何通过优秀的可伸缩特性推迟耗时任务的执行。
通过本章你还将学到如何动态创建私有队列,以及如何获取认证客户端并通过这些私有队列与其收发消息。
为了实现 WebSocket认证与消息认证,我们将 API置为有状态的。对于有状态来说,我们要知道的是 API将会使用 HTTP会话在多个请求间保持用户的认证状态。借助于 Spring Session与高度集群化的 Redis服务器的支持,会话将可以在多个 Web应用间共享。
9 测试与故障排除
本章介绍了一套用于维护、调试与改进应用状态的工具与一般做法。作为本书的最后一部分内容,我们将会学习如何通过 Flyway Maven Plugin将数据库模式从一个应用版本升级为另一个,并将其作为 Maven构建的一部分。我们还会学习如何编写自动化单元测试(借助于 Maven Sure.re与 Mockito)与集成测试(使用一套库,例如 Cargo、Rest-assured与 Maven Failsafe)。
该章的最后一节介绍了将 Log4j2作为全局日志框架的做法,无论什么环境,我们都可以通过这一日志解决方案来高效排错。

书中多个章节都列出了系统需要具备的硬件与软件条件。而且,学习本书经常需要访问互联网资源,有不少扩展内容都给出了链接,或者需要下载必备软件。此外更加重要的是,本书使用 Git版本系统来管理每章的代码基,本地的 Git仓库需要对应于项目的远程仓库(位于 GitHub上),要能够访问这个远程仓库。
 前言
本书的示例支持三种操作系统: MS Windows、Linux与 Mac OS X。对于硬件平台,推荐使用主流、高性能的工作站,最低 2 GB内存, 500 MB以上空闲硬盘空间。

在编写本书时,作者的一个目标就是一方面尽量保持内容的可读性,另一方面则尽量多地向读者介绍现代 Web开发的实践。
我们相信,对 Spring MVC感兴趣的大多数读者的主要目的在于寻求一个入门套件和工具箱,来开发现代、基于 Spring的 Web应用。我们还相信,大多数读者都倾向于通过实践而非理论来强化对概念的理解。当下,我们都知道人们具有不同的学习习惯与方式。
鉴于此,本书的各个章节都是逐步推进的,从直观的第 1章到更具挑战性的第 8章。相比后面的章节来说,前几章更适合大多数 Java开发者。
话虽如此,本书却几乎包含了你所要的一切!本书配套的示例应用已经处于运行状态,等待着你的探索,理解其工作方式。
一般来说,我们假定你是一名具有 Web开发经验的 Java开发者。此外,我们期望你对学习 Spring Web技术拥有浓厚的兴趣。

目录

目录
1 企业级Spring应用的搭建. ........................................1

引言 ...........................1

安装Eclipse JEE开发者版本与Java SE 8 ............................2

为Eclipse配置Java 8、Maven 3和Tomcat 8 ........................5

定义Maven的项目结构 ......................................................12

安装Spring、Spring MVC和Web结构 ...............................24


2 使用Spring.MVC设计微服务架构. .........................35

引言 .........................35

使用简单URL映射配置控制器 .........................................36

使用ViewResolver配置回退控制器 ...................................49

使用Bootstrap创建并自定义响应式单页面Web设计.......53

使用JSTL在视图中显示模型 .............................................72

定义通用WebContentInterceptor ........................................82

使用AngularJS设计客户端MVC模式 ...............................88


3 Java持久化与实体...............................................100

引言 .......................100

在Spring中配置Java持久化API .......................................101

定义有用的EJB3实体和关系 ...........................................105

使用JPA与Spring Data JPA ............................................... 115


4 为无状态架构构建REST.API................................122

引言 .......................122

绑定请求与编排响应 .......................................................123

配置内容协商(JSON与XML等) .................................133

添加分页、过滤器与排序功能 .......................................138

全局处理异常 .......149

使用Swagger生成文档与公开API...................................156


5 使用Spring.MVC进行认证..................................163

引言 .......................163

配置Apache HTTP服务器来代理Tomcat服务器 ............163

修改用户和角色以适应Spring Security ..........................172

基于BASIC的认证方式....................................................183

第三方OAuth2认证 ..........................................................193

在REST环境中保存认证信息.......................................... 211

服务与控制器授权 ...........................................................220


6 实现HATEOAS....................................................235

引言 .......................235

将DTO改造成Spring HATEOAS资源 .............................236

为超媒体驱动的API创建链接 .........................................244

JPA实体的暴露策略 .........................................................252

通过OAuth从第三方API获取数据..................................259


7 开发CRUD操作与校验.........................................266


引言 .......................266

为所有HTTP方法扩展REST处理程序............................267

使用Bean Validation校验资源 ..........................................278

REST消息与内容的国际化..............................................292

使用HTML5和AngularJS校验客户端表单 .....................302


8 通过WebSocket与STOMP进行通信...................308

引言 .......................308

通过基于SockJS的STOMP使社交事件流媒体化 ..........309

使用RabbitMQ作为多协议消息代理 ..............................322

将任务放入RabbitMQ并通过AMQP消费任务...............328

通过Spring Session和Redis保证消息安全 ......................334


9 测试与故障排除. ...................................................351

引言 .......................351

通过Flyway实现数据库迁移自动化 ...............................352

使用Mockito和Maven Sure.re进行单元测试 .................357

使用Cargo、Rest-assured和Maven Failsafe进行集成测试 ........................................................364

在集成测试中注入Spring Bean .......................................373

使用Log4j2记录日志的现代应用 ....................................377

本书勘误

印次
  • 页码:17  •  行数:图  •  印次: 20170501

    图中左上cloudstreetmarket-parent下面缺cloudstreetmarket-core

    chenhao597 提交于 2018/7/10 10:39:18
    张春雨 确认于 2019/4/11 16:18:07
  • 页码:14  •  行数:7  •  印次: 20170501

    Name:CloudStreetMarket parent
    应为
    Name:CloudStreetMarket Parent

    chenhao597 提交于 2018/7/10 10:37:49
    张春雨 确认于 2018/8/21 15:58:08
  • 页码:17  •  行数:9  •  印次: 20170501

    zipcloud -parent
    应为
    zipcloud-parent

    诗展 提交于 2017/9/20 16:13:18
    张春雨 确认于 2017/9/26 15:28:21
  • 页码:19  •  行数:7、8  •  印次: 20170501

    ZipCloud Parent 和 ZipCloudCore
    应为
    ZipCloud Business Parent 和 ZipCloud Factory Core Business

    chenhao597 提交于 2018/7/10 10:42:56
    张春雨 确认于 2018/8/21 15:56:09
  • 页码:19  •  行数:16  •  印次: 20170501

    执行Maven|Install命令时,需要在Webapp和API项目里面webapp目录下面添加WEB-INF文件夹及web.xml文件才能执行成功。

    chenhao597 提交于 2018/7/10 10:45:29
    张春雨 确认于 2019/4/11 16:19:11

读者评论

  • 在书的第38页,说的是第2章的内容“在Eclipse中配置GIT”,操作步骤的第7步及以后的内容,看不懂。第7步说的是“在左侧的层次结构中(GIT透视图)选择Add an existing local Git repository”,而在我使用的Eclipse版本中,只有一个“Add an existing local Git respository to this view”,应该是点击这个按钮吧?点击了之后的弹出窗口,即第8步所说,“定位到刚才所创建的Git仓库位置”,这句话没看明白,我的项目写在“F://SpringMVC”目录下,这里所说的“Git仓库位置”,说的就是“F://SpringMVC”目录么?(我看到在“F://SpringMVC”目录下有个隐藏文件夹“.git”)。如果是这个目录的话,我选中了,但是这个弹出窗口中“Search results”的文本框中,内容是空的,最下方的“Add”按钮是灰色的,无法点击,只能点击“Cancel”按钮。到后来第9步所说的“Git视图中应该会出现一个新的仓库”,我就更加看不到了。

    能够解答一下这个疑问么?多谢啦!

    346050659发表于 2019/5/30 11:21:30
  • 请问课本上要用的代码在哪下载?

    axiaobai123发表于 2018/5/19 17:59:17
    • 使用迅雷吧

      chenhao597发表于 2018/7/10 10:49:46
  • I can not download the realtive code

    jbj发表于 2017/11/25 23:06:49
  • does anybody download the source successfully

    jbj发表于 2017/11/25 23:05:39
    • 使用迅雷可以的

      chenhao597发表于 2018/7/10 10:49:54
    • use xunlei

      chenhao597发表于 2018/7/20 18:53:10
  • 很差,知识面讲的很浅,而且介绍的细节不详细,给的代码都是错的,运行不起来,在第二张中index.jsp页面获取 var tmpYmax = <c:out value="${dailyMarketActivity.maxValue}"/>;
    var tmpYmin = <c:out value="${dailyMarketActivity.minValue}"/>;这两句都是错的,dto里面根本没有定义maxValue和minValue。

    habit发表于 2017/7/13 15:27:27
    • 代码是可以跑起来的.
      1.DailyMarketActivityDTO里面虽然没有maxValue和minValue 但是它有getMaxValue()和getMinValue()方法,那么"${dailyMarketActivity.maxValue}"这个表达式访问的其实是dailyMarketActivity.getMaxValue()方法.
      2.详情请看79页 使用JSP EL渲染变量 这一节
      3.可以没有私有成员变量 但是要有对应公共方法

      chenhao597发表于 2018/7/21 16:16:26

下载资源

电子书版本

  • Epub
  • Mobi

推荐用户

相关图书

软件架构设计:大型网站技术架构与业务架构融合之道

余春龙 (作者)

本书系统化地阐述了技术架构与业务架构的方法论与实践。本书内容分为5大部分,第1部分从行业背景出发定义架构的概念与范畴;第2部分细致讨论架构所需的计算机功底,包括...

¥49.00

MySQL 8 Cookbook(中文版)

(美) 卡西克·阿皮加 特拉 (Karthik Appigatla) (作者) 周彦伟 孟治华 王学芳 (译者)

MySQL 8.0 的发布是MySQL 发展历史上的一个重要里程碑,也是开源数据库领域内的一个大事件。针对这个版本,MySQL 官方团队做了太多的工作,从查询优...

 

iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift

[德] Marcel Weiher (作者) 李俊阳 马超 程伟 孙莹 译 (译者)

随着应用功能的日益增加,性能问题也逐渐浮出水面,进入我们的视野之中。本书作者Marcel Weiher在性能调优领域有着丰富的经验,在他的带领下,你将会了解如何...

¥99.00

Scala编程(第3版)

Martin Odersky;Lex Spoon;Bill Venners (作者) 高宇翔 (译者)

本书由直接参与Scala开发的一线人员编写,因而对原理的解读和应用的把握更加值得信赖。本书面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握Scala...

¥144.00

质量全面管控——从项目管理到容灾测试

葛长芝 (作者)

本书专门为有志于软件测试的工程师打开软件测试的大门,笔者结合案例讲解测试实践技术,主要内容有:项目管理、项目需求管理、代码质量控制、自动化部署、软件测试、安全测...

¥49.00

Web接口开发与自动化测试——基于Python语言

胡志恒 (作者)

本书以接口测试为主线,以Web开发为切入点,全面介绍了Web接口开发与自动化测试过程中使用的相关技术。全书分为15章,第1章介绍了Python的基础知识,解答初...

¥39.00