中文译文
REST与AJAX
Marten Deinum,Koen Serneels
到目前为止,我们一直在构建一个非常经典的Web应用程序:我们向服务器发送请求,服务器处理请求,然后我们呈现结果并将其显示给客户端。然而,在过去十年中,我们构建Web应用程序的方式发生了很大变化。现在我们有了JavaScript和JSON / XML,它们允许基于AJAX的Web应用程序,并且还会向客户端推送越来越多的行为,包括验证,渲染部分屏幕等等。在本章中,我们从REST(Representational State Transfer)开始,这是一种概念或架构风格,它影响了我们开发人员如何看待Web资源以及我们应该如何处理它们。接下来我们将讨论AJAX并将其与REST结合使用。本章的第二部分介绍了文件上传。您将看到如何使用Spring Framework进行文件上载以及如何在控制器中处理任务。然而,在我们进入这个之前,让我们来看看REST。
REST
本节简要介绍REST的主题。这个概念基本上有两个部分:第一部分是资源,我们如何识别它们,然后是我们运营或使用这些资源的方式。 REST由Roy Thomas Fielding于2000年在一篇名为“建筑风格和基于网络的软件架构的设计”的论文中描述。它描述了如何使用HTTP协议和该协议提供的功能来处理资源。
识别资源
我们简要讨论了URL(唯一资源定位器)所包含的部分。对于REST,这并没有真正改变;但是,URL很重要,因为它指向唯一的资源。
在REST中,它是关于资源的表示,因此URL / URI很重要。它为我们提供了实际资源的位置(网页,网页上的图像,mp3文件等等)。我们在Web浏览器中看到的不是实际资源,而是该资源的表示。下一节将介绍如何使用此资源位置来处理(修改,删除等)该资源。
异步JavaScript和XML(AJAX)
AJAX这个术语是由Jesse James Garrett在2005年创造的。AJAX本身并不是一种技术,它是一组技术,它们共同为我们的Web应用程序创建丰富的用户体验。 AJAX包含以下技术:使用HTML和CSS进行基于标准的表示、使用文档对象模型(DOM)进行动态显示和交互、数据交换和操作(使用XML或JSON)、使用XMLHttpRequest进行异步数据检索、JavaScript。将所有这些结合在一起,虽然首字母缩略词代表异步JavaScript和XML,但它通常与JavaScript Object
Notation(JSON)一起用于在客户端和服务器之间传递数据。由于AJAX已经使用了几年,因此有很多JavaScript框架可以更轻松地创建丰富的用户体验。对于Spring MVC,你选择哪个JavaScript库并不重要,讨论那里丰富的JavaScript库超出了本书的范围。对于我们的示例,我们使用jQuery,在撰写本文时它是最广泛使用的库之一。为了能够使用jQuery,我们需要加载包含此库的JavaScript文件。
在我们的应用程序中添加AJAX
由于Spring MVC的灵活性,可以很容易地将AJAX行为添加到我们的应用程序中,并将其与Spring MVC很好地集成。在本节中,我们将看到如何将表单提交更改为基于AJAX的表单提交(使用和不使用JSON)。但是表单提交并不是AJAX的唯一可能用途;它只是为我们的示例应用程序提供服务,也很有可能创建自动完成字段,自动字段/表单验证等。
发送和接收JSON
可以将JSON发送到服务器以及从服务器接收JSON。 。发送JSON的优点是它非常紧凑,因此发送和处理(客户端和服务器端)比XML更快。缺点是您需要一些手动编码来准备JSON以便发送到服务器,尤其是在重用现有对象时(我们在示例中可以看到)。为了实现这一点,我们需要修改客户端JavaScript并对请求处理方法进行一些更改。控制器需要知道我们没有使用普通模型属性,而是希望将JSON用于BookSearchCriteria。为了实现这一点,我们将使用RequestBody注释我们的方法参数;它类似于ResponseBody,但它是针对传入请求的。