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字符串压缩解压示例

    Java字符串压缩和解压是比较常用的操作,可以减小字符串的体积,减少网络传输的时间和带宽占用。下面是这个过程的完整攻略: 1. 导入相关库 我们需要导入Java的压缩和解压相关库,包括java.util.zip.Deflater和java.util.zip.Inflater。使用方法如下: import java.util.zip.Deflater; imp…

    Java 2023年5月27日
    00
  • Java Calendar日历类的使用介绍

    当我们需要对日期进行计算时,Java中的Calendar类就变得很有用了。本文将介绍如何使用Calendar类进行日期的相关操作。 什么是Calendar类 Calendar是Java日期时间的中心类。它提供了查询日期、时间、周等日历字段(如YEAR、MONTH、DAY_OF_MONTH、HOUR)以及将时间转换为指定格式的方法。底层实现是Gregorian…

    Java 2023年5月20日
    00
  • 2023年4月21日-关于远程feign调用实现文件上传下载

    一、客户需求:做一个查询程序,客户提供一个excel模板,将查询结果保存到excel模板中,上传到文件服务,供客户下载使用。 二、代码实现 // 服务A,文件上传 @ApiOperation(“上传文件-demo”) @PostMapping(value = “/uploadDemo/{busType}/{billId}”) public ResBean u…

    Java 2023年4月22日
    00
  • 浅谈java中定义泛型类和定义泛型方法的写法

    下面是“浅谈Java中定义泛型类和定义泛型方法的写法”的完整攻略。 一、泛型类的定义和使用 1.1 什么是泛型 在Java中,泛型就是参数化类型,即在定义类、接口或方法时使用类型形参,这些类型形参在使用时才被具体化。使用泛型能够使代码更加通用,安全,简单和易于维护。 1.2 如何定义泛型类 使用尖括号定义类型形参,如<T>。在类的定义中将类型形参…

    Java 2023年5月20日
    00
  • Spring Boot2解决idea console 控制台输出乱码的问题

    针对Spring Boot 2解决IDEA控制台输出乱码的问题,我们需要进行以下步骤: 步骤一:在application.properties文件中加入配置项 在Spring Boot2的应用程序中可以在application.properties文件中增加以下配置项: # 配置控制台编码为utf-8 spring.output.ansi.enabled=a…

    Java 2023年5月20日
    00
  • Java中的两种for循环介绍

    当需要遍历某个集合或数组时,Java中有两种常见的for循环方式:for循环和foreach循环。本文将对这两种for循环方式进行详细介绍。 for循环 for循环是Java中最常见的循环语句之一,适用于已知循环次数的情况。语法如下: for (初始化表达式; 布尔表达式; 更新表达式) { // 循环体 } 其中,初始化表达式可以用来定义循环计数器的初始值…

    Java 2023年5月20日
    00
  • SpringBoot项目中使用AOP的方法

    下面我来为您详细讲解在SpringBoot项目中使用AOP的方法。 首先,您需要在pom.xml文件中添加AOP的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop&lt…

    Java 2023年5月15日
    00
  • Springboot和Jpa实现学生CRUD操作代码实例

    下面我会详细讲解“Springboot和Jpa实现学生CRUD操作代码实例”的完整攻略。 一、前置知识 在进行本篇攻略之前,需要掌握以下的技术和知识: Spring Boot的基本使用方法; JPA的基本使用方法; MySQL数据库的基本使用方法。 如果你还不熟悉这些知识,可以先查看相关的官方文档或者参考相关的教程。 二、创建Spring Boot项目 首先…

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