Java Web中Ajax技术使用方法介绍

JavaWeb中Ajax技术使用方法介绍

什么是Ajax

Ajax全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML。

在Java Web中,Ajax可以让前端页面异步地向后台Java Servlet/Controller发送请求,获取响应数据,更新页面的部分内容,从而提升用户交互的体验。

使用Ajax

1. 引入 Ajax 相关的 JavaScript 库

在头部引入jquery.min.jsjquery.md5.js两个文件。

<script type="text/javascript" src="${rootPath}/static/js/jquery.min.js"></script>
<script type="text/javascript" src="${rootPath}/static/js/jquery.md5.js"></script>

在${rootPath}中填入工程的相对路径。

2. 发送AJAX请求

使用jQuery的ajax()方法向后台发送ajax请求:

function sendAjaxReq() {
    $.ajax({
        type: "POST", // HTTP请求类型为POST
        url: "${rootPath}/ajax", // 请求url
        data: { // 请求参数
            name: 'Jack',
            age: 19
        },
        dataType: "json", // 从服务器返回的结果是什么数据类型
        success: function (response) { // 回调函数,处理请求成功后的结果
            console.log(response);
        },
        error: function (response) { //  请求失败时的回调函数
            console.log(response);
        }
    });
}

上述代码的解释:

  • 请求类型为POST方式
  • 请求url是${rootPath}/ajax,表示向本工程的ajaxServlet发送请求
  • 请求参数为一个Json对象{name: 'Jack', age: 19}
  • 从服务器返回的结果是json类型的数据
  • 成功获取到响应后触发回调函数,回调函数的参数是响应结果对象
  • 请求失败时触发error回调函数,回调函数的参数是响应结果对象

3. 接收Ajax请求

在Java Servlet或Controller中使用@ResponseBody注解将Java对象转换成JSon格式返回:

@RequestMapping("/ajax")
@ResponseBody
public String ajax(HttpServletRequest request, HttpServletResponse response) {
    String name = request.getParameter("name");
    int age = Integer.parseInt(request.getParameter("age"));

    Map<String, Object> resultMap = new HashMap<>();
    resultMap.put("name", name);
    resultMap.put("age", age);
    resultMap.put("hobby", "swimming");
    String result = new Gson().toJson(resultMap);

    return result;
}

上述代码的解释:

  • url为@RequestMapping(value = "/ajax"),表示接收/ajax请求
  • 使用@ResponseBody注解将Map对象转换成json字符串返回

示例说明

示例1:表单验证

对表单提交进行Ajax验证,当表单输入有误时在相应位置显示错误信息。

$("#registerForm").submit(function() {

    if (!isUserNameValid($("#username").val())) {
        showErrorMessage("#username", "用户名长度应为4-16位字母数字");
        return false;
    }
    if (!isPasswdValid($("#password").val())) {
        showErrorMessage("#password", "密码长度应为6-16位字母数字特殊字符");
        return false;
    }
    if ($("#password").val() != ($("#password2").val())) {
        showErrorMessage("#password2", "两次密码输入不一致");
        return false;
    }

    $.ajax({
        type: "POST",
        url: "${rootPath}/register",
        data: {
            username: $("#username").val(),
            password: $.md5($("#password").val()),
            email: $("#email").val()
        },
        dataType: "json",
        success: function (response) {
            if (response.success == true) {
                //跳转到成功页面
            } else {
                if (response.reason == 1) {
                    showErrorMessage("#username", "用户名已存在");
                } else if (response.reason == 2) {
                    showErrorMessage("#email", "邮箱已被注册");
                } else {
                    showErrorMessage(".register-form>button", "注册失败,请稍后再试");
                }
            }
        },
        error: function () {
            showErrorMessage(".register-form>button", "发生未知错误,请稍后再试");
        }
    });

    return false;
});

上述的代码对一个id#registerForm的表单进行提交验证,将表单的值以jQuery的ajax()方法发送给后台的/register处理。

示例2:通讯录的增删改查

function getContacts() {
    $.ajax({
        type: "POST",
        url: "${rootPath}/contacts",
        dataType: "json",
        success: function (response) {
            if (response.success == true) {
                renderContacts(response.data);
            } else {
                alert("发生错误,请稍后重试!");
            }
        },
        error: function () {
            alert("发生系统错误,请稍后再试!");
        }
    });
}

function addContact() {
    var name = $("#name").val();
    var phone = $("#phone").val();

    $.ajax({
        type: "POST",
        url: "${rootPath}/contact/add",
        dataType: "json",
        data: {
            name: name,
            phone: phone
        },
        success: function (response) {
            if (response.success == true) {
                alert("添加成功!");
            } else {
                alert("发生错误,请稍后重试!");
            }
        },
        error: function () {
            alert("发生系统错误,请稍后再试!");
        }
    });
}

function deleteContact(id) {
    $.ajax({
        type: "POST",
        url: "${rootPath}/contact/delete",
        dataType: "json",
        data: {
            id: id
        },
        success: function (response) {
            if (response.success == true) {
                alert("删除成功!");
                getContacts();
            } else {
                alert("发生错误,请稍后重试!");
            }
        },
        error: function () {
            alert("发生系统错误,请稍后再试!");
        }
    });
}

function modifyContact(id) {
    var name = $("#" + id + " .name").val();
    var phone = $("#" + id + " .phone").val();

    $.ajax({
        type: "POST",
        url: "${rootPath}/contact/modify",
        dataType: "json",
        data: {
            id: id,
            name: name,
            phone: phone
        },
        success: function (response) {
            if (response.success == true) {
                alert("修改成功!");
            } else {
                alert("发生错误,请稍后重试!");
            }
        },
        error: function () {
            alert("发生系统错误,请稍后再试!");
        }
    });
}

上面代码对一个通讯录进行增删改查操作。其中getContacts函数用于向服务器获取通讯录列表,addContact浏览器发送“添加联系人”的请求,deleteContact用于删除指定联系人,modifyContact用于修改指定联系人。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Web中Ajax技术使用方法介绍 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Spring MVC 学习 之 – URL参数传递详解

    Spring MVC 学习之 – URL 参数传递详解 在 Spring MVC 中,我们可以通过 URL 参数传递来传递数据。本文将详细讲解 Spring MVC 中 URL 参数传递的使用,包括如何获取 URL 参数、如何使用 @PathVariable 注解获取路径参数、如何使用 @RequestParam 注解获取请求参数,并提供两个示例说明。 获取…

    Java 2023年5月18日
    00
  • Spring Boot 实例代码之通过接口安全退出

    下面我将详细讲解Spring Boot实例代码之通过接口安全退出的攻略。 1. 确认需求 在开始编写代码之前,需要确认需求。根据题目要求,我们需要编写一个接口,让用户可以通过接口安全退出系统。 2. 编写代码 2.1. 添加依赖 首先,在pom.xml文件中添加Spring Security的依赖: <dependency> <groupI…

    Java 2023年6月3日
    00
  • java.exe和javaw.exe的区别及使用方法

    Java.exe和Javaw.exe是Java程序的可执行文件,它们的区别在于展示用户界面时的方式。 Java.exe是Java虚拟机的客户端模式,它会在调用Java程序时打开一个控制台窗口,这个窗口可以输出程序的输出和错误信息。使用Java.exe运行程序需要在命令行中输入以下命令: java <your_program>.jar Javaw.…

    Java 2023年5月19日
    00
  • 小程序实现横向滑动日历效果

    如下是小程序实现横向滑动日历效果的完整攻略: 步骤一:页面布局 页面布局一般使用scroll-view实现横向滑动效果。具体地,在scroll-view中添加一个日历视图即可。通常我们使用一个表格来实现日历视图,表格中的每个格子代表一个日期。代码示例如下: <scroll-view scroll-x="true" class=&qu…

    Java 2023年5月23日
    00
  • 反射调用private方法实践(php、java)

    让我详细讲解一下反射调用private方法的完整攻略。 什么是反射 反射是指在运行时获取一个类或对象的相关信息,比如属性、方法等,并可以动态调用这些方法和属性。反射是很强大的一个功能,在一些特殊的情况下,可以使用反射来实现一些普通的API所无法完成的功能。 反射调用private方法的步骤 如果要调用某个类中的private方法,可以借助PHP或Java的反…

    Java 2023年5月31日
    00
  • java实现秒表功能

    下面是Java实现秒表功能的完整攻略: 确定界面布局 首先,要确定秒表界面的布局,可以使用Swing包提供的JFrame、JLabel等组件。 一个简单的秒表GUI界面可以包含如下控件: 用于显示秒数的JLabel。 用于开始、停止、清零等操作的JButton。 (可选)用于记录计时时间的列表或文本框。 编写计时器逻辑 初始秒表面板布局完成后,需要编写计时器…

    Java 2023年5月20日
    00
  • Spring MVC的web.xml配置详解

    简介 在Spring MVC应用程序中,web.xml文件是必需的配置文件之一。它包含了应用程序的基本配置信息,例如Servlet、Filter、Listener等。本文将详细介绍Spring MVC的web.xml配置,并提供两个示例说明。 配置Servlet 在Spring MVC应用程序中,我们需要配置一个Servlet来处理HTTP请求。以下是一个配…

    Java 2023年5月17日
    00
  • MyBatis复杂Sql查询实现示例介绍

    下面我来为您详细讲解“MyBatis复杂Sql查询实现示例介绍”的攻略。 一、什么是MyBatis复杂Sql查询? MyBatis是一种基于Java的持久层框架,它的目的主要是简化数据库访问过程,允许用户通过XML或注解的方式来配置SQL语句,使得编写和维护数据库访问相关的代码变得更加容易。MyBatis复杂Sql查询是指在查询数据库时,使用MyBatis框…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部