新書推薦:
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:HK$
76.8
《
自伤自恋的精神分析
》
售價:HK$
52.8
《
大宋悬疑录:貔貅刑
》
售價:HK$
74.8
《
不被大风吹倒
》
售價:HK$
65.9
《
人生解忧:佛学入门四十讲
》
售價:HK$
107.8
《
东野圭吾:分身(东野圭吾无法再现的双女主之作 奇绝瑰丽、残忍又温情)
》
售價:HK$
64.9
《
浪潮将至
》
售價:HK$
86.9
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:HK$
57.2
|
編輯推薦: |
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实战》内容提要
《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 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
|
內容試閱:
|
译者序
毋庸置疑, 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相关的几个概念与实践,例如过滤器链、 <http>命名空间、认证管理器,以及角色与用户的管理等。我们的 OAuth2流是个客户端实现。我们在用户首次使用第三方提供者 Yahoo! 时在应用中对其进行认证。这些 Yahoo! 的认证与连接信息稍后会被用于从 Yahoo! Finance中拉取最新的财经数据。借助于 Spring Social库,我们可以在后台对 OAuth2实现完全的抽象化。
6 实现 HATEOAS
本章介绍了如何将 RESTful Spring MVC API更进一步。超媒体驱动的应用为每个单独的请求资源都提供了链接,这些链接反映了相关资源的 URL。它们向客户端(无论是何种类型的客户端)提供了
|
|