【发布时间】:2011-01-08 23:17:07
【问题描述】:
谁能告诉我。 Ajax 请求到底是什么?和 Servlet Request 有区别吗?
【问题讨论】:
-
请求头应该包含这个键值对:x-requested-with : xmlHttpRequest
谁能告诉我。 Ajax 请求到底是什么?和 Servlet Request 有区别吗?
【问题讨论】:
Ajax 调用是由浏览器发起的异步请求,不会直接导致页面转换。 servlet 请求是 Java 特定的术语(servlet 是一种 Java 规范),用于为 HTTP 请求提供服务,该请求可以获得简单的 GET 或 POST(等)或 Ajax 请求。
Ajax(“异步 Javascript 和 XML”)请求有时称为 XHR 请求(“XmlHttpRequest”),这是大多数浏览器为用于发送 Ajax 请求的对象命名的名称,因为至少最初 Ajax 调用涉及发送和接收 XML,但现在发送/接收 JSON、纯文本或 HTML 一样普遍。
Ajax 请求的一个很好的例子是 Stackoverflow 上的评论系统。您可以在文本框中输入评论,然后单击提交。它不会提交整个页面(就像传统的 HTML 表单提交一样,通常会转换为 POST 但有时会转换为 GET HTTP 请求)。相反,浏览器可能会通过 XHR 向服务器发送一个 POST 请求并收到响应通知(因此是“异步的”)。但服务器通常无法区分 Ajax 请求或页面转换,因为两者都归结为 HTTP 请求。
【讨论】:
But the server typically can't distinguish between an Ajax request or a page transition - 大多数 Ajax 请求都使用标头 X-Requested-With: XMLHttpRequest 发送,因此服务器可以假设它是基于该标头的 Ajax 请求
Ajax 或异步 JavaScript 和 XML 是一种 Web 应用程序开发方法,它使用客户端脚本与 Web 服务器交换数据。因此,网页会动态更新,而不会因刷新整个页面而中断交互流程。
使用 Ajax,您可以创建更丰富、更动态的 Web 应用程序用户界面。客户端。 另一方面,servlet 请求在服务器端处理从 UI 发送的请求。
当访问者请求页面时,服务器会立即发送完整的 HTML 和 CSS 代码。访问者填写表单并提交后,服务器处理信息(Servlet Request 对象向 servlet 提供客户端请求信息。servlet 容器创建一个 ServletRequest 对象并将其作为参数传递给 servlet 的 service 方法)并重建页。然后它将整个页面发送回客户端。以此类推。
使用 AJAX 时,页面仅在第一次被请求时完全加载一次。除了构成页面的 HTML 和 CSS 代码外,还下载了一些 JavaScript 文件:AJAX 引擎。然后,所有对服务器的数据请求都将作为 JavaScript 调用发送到该引擎。然后 AJAX 引擎异步向 Web 服务器请求信息(servlet 请求对象包含已更改的请求参数)。因此,只有很小的页面位被请求并发送到浏览器,因为它们是用户需要的。引擎然后显示信息而不重新加载整个页面。这导致了响应速度更快的界面,因为只有必要的信息在客户端和服务器之间传递,而不是整个页面。
更多关于ajax实现的信息,我们可以参考http://www.ibm.com/developerworks/library/j-ajax1/
【讨论】:
Ajax 不是一种编程语言或工具,而是一个概念。 Ajax 是一个客户端脚本,无需回发或完整的页面刷新即可与服务器/数据库进行通信。
【讨论】:
问题在于,就像 IT1 中使用的许多术语一样,“AJAX 请求”或“Servlet 请求”都没有明确的定义。我能想到的最好的方法如下:
AJAX 是“异步 Javascript 和 XML”的缩写,但如今该术语已延伸以包含 JSON 而不是 XML。关键思想是嵌入在网页中的逻辑(在 Javascript 中)将异步 HTTP 请求返回到“主”服务器以请求更多信息,而不是触发整个网页的刷新。
AJAX 请求是由 AJAX 应用程序发出的请求。通常,它是由(浏览器驻留的)Javascript 发出的 HTTP 请求,它使用 XML 对请求数据和/或响应数据进行编码。在 Javascript 中发出 AJAX 请求的标准方法是使用 XmlHttpRequest 对象,但这是一个实现细节......不是 AJAX 定义的基础。
Servlet 请求是向 Servlet 发出的请求。理论上,它甚至不需要是 HTTP 请求,因为 Servlet 技术(理论上)也被设计为在其他协议上工作。在我看来,这不是一个特别有用的术语。
所以……AJAX请求可以是Servlet请求也可以不是,Servlet请求可以是AJAX请求也可以不是。
值得指出的是,有一个名为ServletRequest 的Java 接口构成了J2EE API 的一部分。此接口是一种对象,用于在基于 J2EE 的 Web 应用程序容器中传递 Web 请求的详细信息。因此,当您看到有人使用“Servlet 请求”一词时,他们实际上可能在谈论 ServletRequest 实例。
1 - 实际上,这与任何其他自然语言没有什么不同。单词和短语的含义取决于人们如何使用它们,而不是基于您在字典中可能找到的任何定义。字典中的“定义”往往是在一个词或短语被普遍使用后数年或数十年才出现的,它根据该词的使用方式(或曾经使用方式)给出含义,而不是对含义的规范。
【讨论】:
从客户端发出一个 AJAX 请求(使用 Javascript),而从服务器发出一个 servlet 请求(我想是使用 Java)。
我建议你在 Wikipedia 或其他地方查找它。
【讨论】:
Ajax 请求是对 Web 服务器的调用。你想如何处理它取决于你。 Servlet 绝对是一种方式。
【讨论】: