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日

相关文章

  • BootStrap Table 后台数据绑定、特殊列处理、排序功能

    Bootstrap Table 是一款基于 Bootstrap 样式的表格插件,它提供了丰富的功能如数据绑定、特殊列处理和排序功能等。在后台数据绑定方面,Bootstrap Table 提供了多种方式,包括本地(Local)、远程(Remote)和 URL,可以根据情况选择不同的方式。下面以远程方式为例进行讲解。 远程数据绑定 Bootstrap Table…

    Java 2023年6月15日
    00
  • 一篇超详细的Spring Boot整合Mybatis文章

    Spring Boot整合MyBatis完整攻略 Spring Boot是一个快速开发框架,可以帮助开发人员快速构建Web应用程序。在Spring Boot中,整合MyBatis可以帮助我们更方便地操作数据库。本文将介绍如何在Spring Boot中整合MyBatis,并提供两个示例。 整合MyBatis 在Spring Boot中整合MyBatis需要以下…

    Java 2023年5月15日
    00
  • Spring Boot+Mybatis的整合过程

    Spring Boot和MyBatis是两个非常流行的Java框架,它们可以很好地协同工作。在本攻略中,我们将详细讲解如何将Spring Boot和MyBatis整合,以及如何使用它们来构建一个完整的Web应用程序。 整合过程 1. 添加依赖 首先,我们需要在pom.xml文件中添加Spring Boot和MyBatis的依赖。以下是一个示例: <de…

    Java 2023年5月14日
    00
  • JSP开发之hibernate之单向多对一关联的实例

    JSP开发之hibernate之单向多对一关联的实例 在Hibernate中,多对一关系是常见的一种关系,也是应用较广的关系之一。本文将讲解如何使用Hibernate实现单向多对一关联。 创建多对一关联的实体类 在Hibernate中,实现多对一关联关系时,需要定义一个实体类作为“多”的一方,在该实体类中声明一个关联的对象,使用引用类型(通常为另一个实体类的…

    Java 2023年5月31日
    00
  • 软引用的作用是什么?

    软引用是Java语言中的一种引用类型,用于描述一些有用但不必须的对象。在Java中,垃圾回收器在回收时会自动处理所有的软引用对象,但只有在内存空间不足时才会回收这些对象。 使用软引用可以解决一些问题,如内存泄漏、内存占用等问题。下面介绍软引用的使用攻略: 1. 创建软引用对象 在Java中,可以使用java.lang.ref.SoftReference类来创…

    Java 2023年5月10日
    00
  • Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装详细教程

    Java运行环境配置教程 Java安装 下载JDK安装包,选择与自己操作系统相匹配的版本 双击安装包,根据提示完成安装 打开命令行窗口,输入以下命令查看Java版本是否安装成功 java -version Tomcat安装 下载Tomcat安装包,选择与自己操作系统相匹配的版本 解压缩安装包到指定目录 打开命令行窗口,进入Tomcat的bin目录,并运行st…

    Java 2023年5月19日
    00
  • java字符串格式化(String类format方法)

    当我们需要将一个字符串和一些占位符组合起来形成一个新的字符串时,该怎么做呢?答案就是使用Java字符串格式化方法。Java字符串格式化方法可以让我们灵活地使用字符串格式化功能,将我们想要的内容组合成一个格式化好的字符串。 1. 字符串格式化的语法 Java字符串格式化方法使用占位符来表示要在新字符串中插入的值。以下是常见的占位符及其类型和示例: 占位符 类型…

    Java 2023年5月26日
    00
  • 深入了解Java中的Filter过滤器

    本文将深入讲解Java中的Filter过滤器。其中,我们会首先介绍Filter在Java Web开发中的应用场景和基本原理,之后我们会逐步讲解过滤器的使用方法和注意事项,最后以两个实例说明Filter的具体使用。让我们开始吧! 一、什么是Filter过滤器 在Java Web开发中,Servlet是最重要的组件之一,主要负责处理HTTP请求。但是,我们在开发…

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