编辑推荐
Spring MVC是一个面向Web应用的轻量级框架。作为Spring框架的一部分,它天然扩展了Spring并为Web相关问题提供了一致的解决方案。
通过设计Maven模块,你将会实现一个企业级、无状态的REST应用。本书的独特之处在于从Spring生态圈中收集了大量的实用开发技术。你将会通过超媒体与HATEOAS来实现客户与产品之间的无状态会话,并掌握如何配置基于WebSocket的消息服务。最后,你将会学到如何创建并组织不同层次的自动化测试。
■ 使用Maven构建项目,并创建自测试、领域特定、可部署的Web归档。
■ 使用AngularJS与Bootstrap为响应式与强大的前端生成模板。
■ 构建高性能、无状态的RESTful与超媒体应用来支持多客户体验。
■ 使用BASIC认证模式与OAuth2通过REST进行认证。
■ 使用Swagger与Swagger UI来文档化并发布REST API。
■ 实现Spring Web应用的可伸缩。
■ 通过WebSocket与STOMP消息进行通信。
内容简介
《Spring MVC实战》由浅入深地介绍了当今流行的Java Web框架Spring MVC的方方面面,从基础的环境搭建到微服务设计与架构,再到持久化、REST API构建、认证与测试……涵盖了Spring MVC诸多重要且常用的特性。值得一提的是,《Spring MVC实战》针对Spring MVC的每一项特性都提供了完整可运行的示例代码,可以帮助读者更好地掌握这项技术。
无论是Spring MVC的初学者,还是拥有一定经验的开发人员,都能够从《Spring MVC实战》中获得启发,更好地理解Spring MVC这一Web开发“利器”。
作者简介
Alex Bretet,是一位知名的Java 与Spring 集成工程师,目前就职于Thunderhead,这是一家全球知名的SaaS 提供商。他拥有能源、保险、财务与互联网等多个领域的丰富开发经历。受到互联网通信能力与诸多初创公司的感染,他深信开发所能带来的价值(志趣相同的一帮人能在很短的时间内实现令人难以置信的目标)。他还是开源,特别是Spring 的拥护者,其实用主义持续不断地“瓦解”着现有的做法,并提供了颇具价值的替代方法。可以通过alex.bretet@gmail.com 与作者取得联系,或者在Twitter 上关注@abretet。
目录
1 企业级Spring应用的搭建.1
引言 1
安装Eclipse JEE开发者版本与Java SE 82
为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
定义通用WebContentInterceptor82
使用AngularJS设计客户端MVC模式88
3 Java持久化与实体100
引言 100
在Spring中配置Java持久化API 101
定义有用的EJB3实体和关系105
使用JPA与Spring Data JPA 115
4 为无状态架构构建REST API122
引言 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 Surefire进行单元测试 357
使用Cargo、Rest-assured和Maven Failsafe进行集成测试 364
在集成测试中注入Spring Bean 373
使用Log4j2记录日志的现代应用 377
前言/序言
欢迎阅读这本独一无二的《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技术拥有浓厚的兴趣。
Spring MVC实战 下载 mobi epub pdf txt 电子书 格式
评分
☆☆☆☆☆
618活动打折买的,价格实惠,支持正版,计算机经典必读书籍
评分
☆☆☆☆☆
一段情,一场梦,几多泪,几多痛,伤了心,断了肠。
评分
☆☆☆☆☆
和此卖家交流,不由得精神为之一振,自觉七经八脉为之一畅,我在JD买了这么多年,所 谓阅商无数,但与卖家您交流,我只想说,老板你实在是太好了,你的高尚情操太让人感动 了,本人对此卖家之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心。交易成功 后,我的心情是久久不能平静,自古英雄出少年,卖家年纪轻轻,就有经天纬地之才,定国 安邦之智,而今,天佑我大中华,沧海桑田 5000 年,神州平地一声雷,飞沙走石,大雾迷 天,朦胧中,只见顶天立地一金甲天神立于天地间,花见花开,人见人爱,这位英雄手持双 斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒。得此大 英雄,实乃国之幸也,民之福,人之初也,怎不叫人喜极而泣……看着交易成功,我竟产生 出一种无以名之的悲痛感——啊, 这么好的卖家, 如果将来我再也遇不到了, 那我该怎么办? 直到我毫不犹豫地把卖家的店收藏了, 我内心的那种激动才逐渐平静下来, 可是我立刻想到, 这么好的卖家,倘若别人看不到,那么不是浪费心血吗?经过痛苦的思想斗争,我终于下定 决心,牺牲小我,奉献大我。我要以此评价奉献给世人赏阅,我要给好评……评到所有人
评分
☆☆☆☆☆
这书对于初学Springboot的人来说已经很好了,属于入门级的,希望可以有所提升!
评分
☆☆☆☆☆
618活动打折买的,价格实惠,支持正版,计算机经典必读书籍
评分
☆☆☆☆☆
趁着大促,屯书,都是想看的,非常期待!翻了翻,应该不错,看后再细评!
评分
☆☆☆☆☆
吾消费京东商城数年,深知各产品琳琅满目。然,唯此宝物与众皆不同,为出淤泥之清莲。使吾为之动容,心驰神往,以至茶饭不思,寝食难安,辗转反侧无法忘怀。于是乎紧衣缩食,凑齐银两,倾吾之所有而能买。东哥之热心、快递员之殷切,无不让人感激涕零,可谓迅雷不及掩耳盗铃儿响叮当仁不让世界充满爱。待打开包裹之时,顿时金光四射,屋内升起七彩祥云,处处皆是祥和之气。吾惊讶之余甚是欣喜若狂,呜呼哀哉!此宝乃是天上物,人间又得几回求!遂沐浴更衣,焚香祷告后与人共赏此宝。人皆赞叹不已,故生此宝物款型及做工,超高性价比之慨,且赞吾独具慧眼与时尚品位。产品介绍果然句句实言,毫无夸大欺瞒之嫌。实乃大家之风范,忠义之商贾
评分
☆☆☆☆☆
很不错,印刷质量和纸张都不错。希望有助于我架构师工作的开始。mark一下。如果说早点能加入电商领域的架构师工作,或许我也能写成这本书。同行们是否认同?呵呵(^_^)买它没错。
评分
☆☆☆☆☆
因此“我”只能任“孤独拉长而且燃烧”,即使“淹死在水中”也只能心甘情愿。“你”只能是“我遥远的女人”,即使“你”向“我”示好,那也只是“可怕的海岸”,“我”如果靠岸,也只会陷入绝望的“大海”。“我”能做的只是“撒下悲伤的网”,捕捞“你”“海洋的眼睛”,这首用充满象征、比喻和变幻莫测的语言,发泄苦闷、绝望的情绪,同时韵律精巧、节奏鲜明、富有音乐美。在诗歌形式上,聂鲁达能够兼容并收,他突破了现实主义的传统格式,汲取民间文学、浪漫主义、现实主义的长处,形成自己豪迈奔放的风格。