这篇文章解释了 Ajax基础知识以及如何使用 javascript 通过 AJAX 向 servlet 发出 HTTP 请求

Ajax异步 Javascript 和 XML)是一种我们可以在 Web 开发中使用的技术用于创建更快的用户界面更新更好的用户体验。Ajax 使用 XMLHttpRequest 对象服务器进行通信。使用 ajax,用户可以在不提交页面或重新加载浏览器页面的情况下将数据发布到后端服务器。使用 servlet 创建 AJAX 示例应用程序非常简单。

在这篇文章中,我们学习如何使用 Ajax 技术调用后端 servlet,从 servlet 获取响应并相应地修改用户界面

我们将通过创建一个简单的 javascript ajax 示例学习

版本详情

目录

使用 servlet 应用程序创建 AJAX 示例

我们将 Servlet 用于处理通过 Ajax 调用发出的请求并将 JSON 响应发送浏览器的后端。

在 Eclipse IDE 上创建一个动态 Web 项目。我们正在创建一个名为 AjaxExample 的动态 Web 项目, 如下所示

NetBeans IDE

 

创建一个 servlet

在上一步中,我们创建了动态 Web 项目src 文件夹下 创建一个 servlet 类 AjaxHandler.java 

这个 Servlet 类处理来自我们前端 html 页面的 Ajax 调用。在这个类中,我们使用硬编码的 JSON 对象值作为响应。Servlet 类在通过 Ajax 调用调用时返回一个 JSON 数组作为响应

请注意,要创建 JSON 对象,我们需要依赖项 jar 添加动态 Web 项目的类路径库中。在此示例中,我们使用的是 org.json 依赖 jar下载最新的 jar 并将其添加到类路径或放在 WEB-INF/lib 目录下。

在下面的代码中,我们实现了 HTTP GET 方法。 

我们正在创建一个 JSON 数组并向该数添加两个 JSON 对象。最后,我们通过响应返回这个 JSON 数组。 

我们的 JSON 对象包含 姓名 和 年龄 属性。另外,请注意,在  我们返回 JSON 数据时,响应 MIME 类型设置application/json


import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONArray;
import org.json.JSONObject;

@WebServlet("/AjaxHandler")
public class AjaxHandler extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public AjaxHandler() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        JSONArray array = new JSONArray();

        JSONObject user1 = new JSONObject();
        user1.put("name", "TOM");
        user1.put("age", "26");
        JSONObject user2 = new JSONObject();
        user2.put("name", "ASB");
        user2.put("age", "26");

        array.put(user1);
        array.put(user2);

        response.setContentType("application/json");
        response.getWriter().write(array.toString());
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

html 页面使用 Ajax 调用 servlet

在上一步中,我们创建了后端 servlet。现在最后一步是创建一个 html 页面并将 Ajax 调用添加到其中。

在我们动态 Web 项目Webcontent 文件夹 下 创建一个 html 页面 index.html将以下 html 内容添加到页面。 

我们使用 http GET 方法(使用 XMLHttpRequest)调用后端 servlet,并将 servlet 返回内容附加到  id 为 contentDiv的div html 元素上。

<!DOCTYPEhtml>
<html>
    <head>
        <style>
            #contentTable,th,td{
                border:solid 1px black;
            }
        </style>
    </head>
    <body>
        <h2>Ajax Example with Servlet</h2>

        <button onclick="callAjax();">GetData</button>
        <br/><br/>


        <table id="contentTable">
            <tr>
                <th>Name</th><th>Age</th>
            </tr>
        </table>
        <div id="loading"></div>

        <script type="text/javascript">
            function callAjax() {

                document.getElementById('loading').innerHTML = "LoadingData...";

                httpRequest = new XMLHttpRequest();

                if (!httpRequest) {
                    console.log('Unable to create XMLHTTP instance');
                    returnfalse;
                }
                httpRequest.open('GET', 'AjaxHandler');
                httpRequest.responseType = 'json';
                httpRequest.send();
                httpRequest.onreadystatechange = function () {
                    if (httpRequest.readyState === XMLHttpRequest.DONE) {

                        document.getElementById('loading').innerHTML = "";

                        if (httpRequest.status === 200) {

                            var array = httpRequest.response;
                            for (var i = 0; i < array.length; i++) {

                                var table = document.getElementById('contentTable');
                                var row = table.insertRow(table.rows.length);
                                var cell1 = row.insertCell(0);
                                var cell2 = row.insertCell(1);
                                var name = document.createTextNode(array[i].name);
                                var age = document.createTextNode(array[i].age);
                                cell1.appendChild(name);
                                cell2.appendChild(age);
                            }
                        } else {
                            console.log('Something went wrong..!!');
                        }
                    }
                }
            }
        </script>
    </body>
</html>

简要说明

我们使用 了 httpRequest.open(),它为我们打开了 HTTP 连接第一个参数(在我们的例子中是“GET”)告诉我们将使用哪种 HTTP 请求方法然后我们用第二个参数传递服务器的 URL。

我们还可以传递第三个可选参数(值:truefalse),它通知我们的请求是否是异步的。此参数默认值为 true

接下来,我们使用了 httpRequest.send() 方法,它将我们的请求发送服务器。当我们使用 POST 请求时,我们还可以通过向该方法传递参数来发送任何数据数据采用后端服务可以处理的格式

如果我们要发布数据,那么我们可能必须使用请求内容类型设置请求标头,如下所示

httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

一旦调用者完全接收到来自服务器的响应消息, AJAX 就会以 XMLHttpRequest.DONE (或对应于 4 的值)的就绪状态值进行响应。

就绪状态值的列表是:

一旦响应准备好,并且服务器响应成功,我们将获得 HTTP 响应状态码为 200 OK。

httpRequest.response  对象响应包含服务器发送的响应数据另外,请注意,我们已将响应类型设置为 json ,因为我们从 Servlet 发送 JSON 格式的响应。

我们还可以使用以下方法检索响应:

最后,是时候运行应用程序了。

我们正在使用 Apache Tomcat运行应用程序。以下是对服务器进行 AJAX 调用之前的页面。

收到浏览器的响应后。

结论

本文中,我们学习如何使用 Ajax 技术来调用后端 servlet 并从 servlet 检索响应。

原文地址:https://blog.csdn.net/allway2/article/details/123575124

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41142.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注