SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式

我来详细讲解一下SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式的攻略。

前后端交互的几种方式:

  1. 后端通过模板引擎渲染,前端通过表单提交或a标签跳转来传递数据。
  2. 前后端分离,后端通过RESTful API提供数据,前端通过ajax请求来获取数据。
  3. 前后端分离,后端通过GraphQL提供数据,前端通过GraphQL来获取数据。

Controller接收参数的几种常用方式:

  1. 通过@RequestParam注解来接收参数,例如:
@PostMapping("/user")
public String addUser(@RequestParam("name") String name, @RequestParam("age") int age) {
    // do something
}
  1. 通过@PathVariable注解来接收路径变量,例如:
@GetMapping("/user/{id}")
public String getUserById(@PathVariable("id") int id) {
    // do something
}
  1. 通过@RequestBody注解来接收请求体中的JSON数据,例如:
@PostMapping("/user")
public String addUser(@RequestBody User user) {
    // do something with user object
}

下面我将通过两个示例来详细介绍如何实现前后端、json数据交互以及Controller接收参数的几种常用方式。

示例一:后端通过模板引擎渲染,前端通过表单提交来传递数据

后端代码

首先我们要在pom.xml文件中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

然后我们创建一个UserController,其中包含两个方法:addUser和listUsers。

@Controller
public class UserController {

    private List<User> userList = new ArrayList<>();

    @PostMapping("/user")
    public String addUser(@RequestParam("name") String name, @RequestParam("age") int age) {
        User user = new User(name, age);
        userList.add(user);
        return "redirect:/";
    }

    @GetMapping("/")
    public String listUsers(Model model) {
        model.addAttribute("users", userList);
        return "userList";
    }
}

前端代码

在templates文件夹下创建一个userList.html文件,这个文件是我们通过Thymeleaf动态生成的。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <title>User List</title>
  </head>
  <body>
    <h1>User List</h1>
    <table border="1">
      <tr>
        <th>Name</th>
        <th>Age</th>
      </tr>
      <tr th:each="user : ${users}">
        <td th:text="${user.name}"></td>
        <td th:text="${user.age}"></td>
      </tr>
    </table>
    <form method="post" action="/user">
      <label for="name">Name:</label>
      <input type="text" name="name"/><br>
      <label for="age">Age:</label>
      <input type="number" name="age"/><br>
      <input type="submit" value="Submit"/>
    </form>
  </body>
</html>

示例二:前后端分离,后端通过RESTful API提供数据,前端通过ajax请求来获取数据

后端代码

首先我们要在pom.xml文件中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后我们创建一个UserController,其中包含两个方法:addUser和listUsers。

@RestController
public class UserController {

    private List<User> userList = new ArrayList<>();

    @PostMapping("/user")
    public User addUser(@RequestBody User user) {
        userList.add(user);
        return user;
    }

    @GetMapping("/users")
    public List<User> listUsers() {
        return userList;
    }
}

前端代码

在页面上引入jQuery库,然后使用ajax请求来向后端获取数据。

<!DOCTYPE html>
<html>
  <head>
    <title>User List</title>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
  </head>
  <body>
    <h1>User List</h1>
    <table border="1" id="userTable">
      <tr>
        <th>Name</th>
        <th>Age</th>
      </tr>
    </table>
    <form>
      <label for="name">Name:</label>
      <input type="text" id="name"/><br>
      <label for="age">Age:</label>
      <input type="number" id="age"/><br>
      <button id="submitButton">Submit</button>
    </form>
    <script>
        $(document).ready(function() {
            // 获取用户列表
            $.ajax({
                url: "/users",
                type: "get",
                dataType: "json",
                success: function(data) {
                    $.each(data, function(index, user) {
                        $('#userTable').append("<tr><td>" + user.name + "</td><td>" + user.age + "</td></tr>");
                    });
                }
            });

            // 添加用户
            $('#submitButton').click(function(e) {
                e.preventDefault();

                var name = $('#name').val();
                var age = $('#age').val();

                var user = {name: name, age: age};

                $.ajax({
                    url: "/user",
                    type: "post",
                    data: JSON.stringify(user),
                    contentType: "application/json",
                    dataType: "json",
                    success: function(data) {
                        $('#userTable').append("<tr><td>" + data.name + "</td><td>" + data.age + "</td></tr>");
                    }
                });

                $('#name').val('');
                $('#age').val('');
            });
        });
    </script>
  </body>
</html>

以上就是SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式的攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式 - Python技术站

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

相关文章

  • Java图形化界面设计之容器(JFrame)详解

    Java图形化界面设计之容器(JFrame)详解 1. 容器的概念 在Java图形化界面设计中,容器指的是能够包含其他可视组件(如按钮、文本框等)的组件。容器可以是顶层容器(如JFrame、JDialog等)或内部容器(如JPanel、JTabbedPane等)。 JFrame是一个非常常用的顶层容器,它是Java AWT中的Frame类的一个子类,在Swi…

    Java 2023年5月23日
    00
  • java字符串常用操作方法(查找、截取、分割)

    Java字符串常用操作方法攻略 Java字符串是指包含零个或多个字符的对象。字符串常用于存储和操作文本数据,因此,字符串的操作方法在程序开发中非常重要。本文将介绍Java字符串常用操作方法,包括查找、截取和分割。 1. 查找 1.1 indexOf和lastIndexOf方法 indexOf方法返回指定子字符串第一次出现的位置,如果子字符串未找到则返回-1。…

    Java 2023年5月26日
    00
  • 什么是Java代码优化?

    Java代码优化指的是通过改进代码的设计、实现和运行等方面,使得Java程序的性能更高、消耗的资源更少,同时保证程序的正确性和可维护性。下面给出一个Java代码优化的使用攻略。 步骤一:明确优化目标 优化目标应该具体、明确、可衡量以及符合业务需求。可能的优化目标包括: 提高程序的运行速度,减少响应时间。 降低程序的系统资源消耗,例如CPU占用率、内存占用等。…

    Java 2023年5月11日
    00
  • 什么是内存管理?

    以下是关于内存管理的完整使用攻略: 什么是内存管理? 内存管理是指操作系统或程序运行时如何管理计算机的内存资源。内存管理的主要任务包括内存分配、内存回收、内存保护和内存优化等。 内存管理的示例1:内存分配 例如,以下是一个使用C语言进行内存分配的示例: int *p = (int*)malloc(sizeof(int)); 该代码会在内存中分配一个整型变量所…

    Java 2023年5月12日
    00
  • maven配置文件pom增加变量取版本号方式

    Maven 是一个强大的 Java 项目构建工具,为了方便地管理和构建项目,Maven 在项目根目录下(Maven 3 的版本中叫做 pom.xml)提供了一个 pom.xml 的配置文件,其中可以定义项目的名称、描述、依赖关系等信息。 在 pom.xml 文件中,可以配置 variable(变量) 来存放一些常量,例如版本号、路径等等,以减少硬编码并方便维…

    Java 2023年5月20日
    00
  • cookie+mybatis+servlet实现免登录时长两天半的整体流程

    首先,我们需要了解cookie,MyBatis和Servlet的基本知识。Cookie是存储在客户端的小型文本文件,用于在客户端和服务器之间传递信息。MyBatis是一种ORM框架,用于将Java对象映射到数据库表。Servlet是Java编写Web应用程序的技术。 实现免登录时长两天半的整体流程如下: 用户访问您的网站,并输入用户名和密码。 在服务器端,检…

    Java 2023年6月15日
    00
  • 学好Java MyBatis拦截器,提高工作效率

    学好Java MyBatis拦截器可以提高工作效率,以下是学习拦截器的完整攻略: 1. 拦截器功能及作用 在学习拦截器之前,我们需要了解拦截器的作用。拦截器提供了一种拦截和修改程序执行的方式,以便动态地添加、修改或删除程序的功能。它也可以用于收集日志,或者权限控制等。 MyBatis的拦截器可以作用于执行器、参数处理器、结果集处理器、SQL语句生成器的过程中…

    Java 2023年5月20日
    00
  • Ajax读取数据之分页显示篇实现代码

    Ajax是一种在Web应用程序中创建异步请求的技术。本篇攻略将演示如何使用Ajax读取数据并分页显示。 实现步骤 1.后端:编写接口,提供数据。 2.前端:使用Ajax从后端读取数据并展示。 3.前端:实现分页逻辑。 下面是这些步骤的详细说明。 编写接口 我们需要提供一个接口来获取数据。可以使用PHP、Java或任何其他后端编程语言编写接口。下面是一个使用P…

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