Java教程

【Java基础】前端传一个数组或者集合后台怎么接受(案例详解)

本文主要是介绍【Java基础】前端传一个数组或者集合后台怎么接受(案例详解),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…

文章目录

      • 一、基础学习
      • 二、进阶学习


一、基础学习

hello本期继续以实际案例的形式分享Java基础之 Java后台接受数组和集合的案例,分享给初学者
在这里插入图片描述

首先我们模拟创建一个user的实例

/**
 * @program: demo
 * @description: 普通用户
 * @author: 辰兮要努力
 * @create: 2021-10-03 11:04
 */
@Data
public class User {

    private String id;
    private String name;
    private Integer age;

}

创建一个公共的返回值的帮助类

import lombok.Data;

/**
 * @program: demo
 * @description: 封装公共的返回值
 * @author: 辰兮要努力
 * @create: 2021-10-03 11:05
 */
@Data
public class Result<T> {

    private static final long serialVersionUID = 1L;

    private Integer code;
    private String msg;
    private T data;

    public static Result fail() {
        Result Result = new Result();
        Result.setCode(1);
        Result.setMsg("服务器错误!!!");
        return Result;
    }

    public static Result fail(String msg) {
        Result Result = new Result();
        Result.setCode(1);
        Result.setMsg(msg);
        return Result;
    }

    public static <T> Result success(T data) {
        Result Result = new Result();
        Result.setCode(0);
        Result.setData(data);
        return Result;
    }

    public static Result success() {
        Result Result = new Result();
        Result.setCode(0);
        Result.setMsg("操作成功!");
        Result.setData("success");
        return Result;
    }


}

业务场景一:前端传对象集合后台如何接受?

[
	{
	   "id":"1",
	   "name":"辰兮",
	   "age":"22"
     },
	{
	   "id":"2",
	   "name":"辰兮要努力",
	   "age":"23"
     }
]

后台接受方式

@RequestBody List<User> userList

业务场景二:前端传数组后台如何接受?

["2021","2022"]

后台接受方式

@RequestBody List<String> list

简单的写一个controller层模拟业务操作:重在查看入参

/**
 * @program: demo
 * @description: 前后端传值交互案例
 * @author: 辰兮要努力
 * @create: 2021-10-03 11:09
 */
@RestController
@RequestMapping("/user")
public class UserController {

    //打印日志
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    /**
     * 前端传对象集合 后端用集合接
     * @param userList
     * @return
     */
    @PostMapping("/saveList")
    public Result saveUserList(@RequestBody List<User> userList) {

        logger.info("传入的参数是{}",userList);

        //模拟逻辑层做一个入参校验
        if (CollectionUtils.isEmpty(userList)){
            return Result.fail();
        }
        return Result.success();
    }

    /**
     * 业务场景:前端传入单独一个数组
     * @param list
     * @return
     */
    @PostMapping("/saveUserIds")
    public Result saveStrings(@RequestBody List<String> list) {

        logger.info("传入的参数是{}",list);
        //模拟逻辑层做一个入参校验
        if (CollectionUtils.isEmpty(list)){
            return Result.fail();
        }
        return Result.success();
    }

}

业务场景一:前端传对象的集合后端就用对应的list接受即可
在这里插入图片描述
业务场景二:前端传对应的数组后台接受
在这里插入图片描述

来看看控制台打印的参数
在这里插入图片描述
使用如上的方法即可成功接受前端传入的集合或者数组


二、进阶学习

你是否遇到过这样的问题,就是前端除了传一个集合外,还要传一个字符串或者数字等属性?

业务场景:传入的集合代表要操作的数据,传入的字符串,字符串/数字 不同 走不同的业务逻辑等
请添加图片描述
入参案例如下

{
	"userList":[{"id ":"1","name":"辰兮","age":"22"},{"id":"2","name":"辰兮要努力","age":"23"}],
    "open":1
}

接受方式:创建一个对象接受

/**
 * @program: demo
 * @description: 用户对象接受类
 * @author: 辰兮要努力
 * @create: 2021-10-03 11:04
 */
@Data
public class UserVo {

    private List<User> userList;
    private Integer open;
}

实践案例如下

/**
 * @program: demo
 * @description: 前后端传值交互案例
 * @author: 辰兮要努力
 * @create: 2021-10-03 11:09
 */
@RestController
@RequestMapping("/user")
public class UserController {

    //打印日志
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    /**
     * 业务场景:前端传一个数组➕一个字符串或者数字等
     * @param userVo
     * @return
     */
    @PostMapping("/saveUserVo")
    public Result saveUserVoList(@RequestBody UserVo userVo) {

        logger.info("传入的参数是{}",userVo);

        return Result.success();
    }
}

我们可以debug查看一下入参,很清晰的可以看到前端传入的参数
在这里插入图片描述

前后端传参,最重要的还是统一好对应的参数属性名称,传参方式等,提前确认好,开发效率会大幅提高

请添加图片描述
解答:前端除了传一个集合外,还要传一个字符串或者数字等属性,我们创建一个VO对象来接受即可解决如上的问题


hello,你好 我是辰兮,后续我会继续整理一下Java基础的相关案例,希望可以帮助到更多的初学者,欢迎学习、分享、交流、打卡!

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞

这篇关于【Java基础】前端传一个数组或者集合后台怎么接受(案例详解)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!