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

简介: hello本期继续以实际案例的形式分享Java基础之 Java后台接受数组和集合的案例,分享给初学者
【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

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

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

@[toc]


一、基础学习

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对象来接受即可解决如上的问题


📣推荐阅读

Java面试总结:点击进入 Java面试专栏 关注走一波

Java基础知识:点击进入 Java基础总结 关注走一波

Java项目专栏:点击进入 Java毕设专栏 关注走一波

山高水远,我们未来见……


非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

愿你们奔赴在自己的热爱里!

目录
相关文章
|
1月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
73 0
|
1月前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
1月前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
143 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
1月前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
1月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
21 1
|
1月前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
45 2
|
1月前
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
27 1
|
1月前
|
Java 测试技术 Maven
编写一个java后台
编写一个java后台
16 1
|
1月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
149 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
1月前
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
102 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)

热门文章

最新文章

下一篇
无影云桌面