【JavaEE】_Spring MVC项目使用数组与集合传参

news2024/10/6 16:31:41

目录

1. 使用数组传参

1.2 传递单个参数

1.3 传递多个名称相同的参数

1.3.1 关于urlencode

2. 使用集合传参


1. 使用数组传参

创建一个Spring MVC项目,其中 .java文件内容如下:

package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M6")
    public String m6(String[] arrayPara){
        return "ArrayPara has received:\n"
                + Arrays.toString(arrayPara);
    }
}

注:注意返回语句的书写:如果写成  return "ArrayPara has received:\n"+ arrayPara; 返回的是一个地址,需将其转为字符串进行返回;

使用浏览器构造HTTP请求发送给目标地址:

1.2 传递单个参数

1.3 传递多个名称相同的参数

即:当客户端在同一个请求中发送了多个同名的参数,浏览器会帮我们封装为一个数组

1.3.1 关于urlencode

对于1.3 中提到的在同一个请求中传递多个名称相同的参数的问题,

构造该请求时,除了使用&连接的键值对作为query string部分进行多参数传递的方法外,

还可以直接使用逗号连接多个参数值

即构造参数如下:

这种方式会被成功解析是因为Chrome浏览器会进行urlencode,

关于urlencode问题,在本专栏关于servlet项目前端向后端传参时,也曾提及,文章链接如下:

【JavaEE】_前端使用GET请求的queryString向后端传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136307074不止Chrome,postman也支持urlencode操作,在postman上构造这种类型的请求也可以成功发送并成功收到响应;

可以加上数组长度的输出语句,验证urlencode操作的执行:

.java文件内容如下:

package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M6")
    public String m6(String[] arrayPara){
        return "ArrayPara has received:\n"
                + Arrays.toString(arrayPara)
                + "\nThe length is: " + arrayPara.length;
    }
}

运行启动类后,使用postman构造如下请求并发送 :

2. 使用集合传参

以List接口为例:

.java文件内容如下:

package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M7")
    public String m7(List<String> listParam){
        return "ListParam has received:\n" +listParam
                +"\nThe length is: " + listParam.size();
    }
}

运行启动类后,使用postman构造如下请求并发送 :

查看错误日志:

表示:默认封装方式为数组,而非List接口

如果需要使用List接口,需要使用一个注解@RequestParam

现修改.java文件如下:

package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M7")
    public String m7(@RequestParam(required = false) List<String> listParam){
        return "ListParam has received:\n" +listParam
                +"\nThe length is: " + listParam.size();
    }
}

再次运行启动类,使用postman构造如下请求并发送 :

可见此时参数传递成功;

注:关于@RequestParam注解,在后端代码重命名时也曾使用过,此部分相关原文链接如下:

【JavaEE】_Spring MVC项目之使用对象传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136488702

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1491847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树——700. 二叉搜索树中的搜索、98. 验证二叉搜索树

二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&#xff1a;root [4,2,7,1,3], val 2 …

Lichee Pi 4A:RISC-V架构的开源硬件之旅

一、简介 Lichee Pi 4A是一款基于RISC-V指令集的强大Linux开发板&#xff0c;它凭借出色的性能和丰富的接口&#xff0c;吸引了众多开发者和爱好者的关注。这款开发板不仅适用于学习和研究RISC-V架构&#xff0c;还可以作为软路由、小型服务器或物联网设备的核心组件。 目录 一…

FreeRTOS操作系统学习——FreeRTOS工程介绍

FreeRTOS工程介绍 核心文件 FreeRTOS的最核心文件只有2个&#xff1a; FreeRTOS/Source/tasks.cFreeRTOS/Source/list.c 文件功能如下图&#xff1a; 头文件相关 内存管理文件 文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下&#xff0c;它也是放…

猫狗分类图像识别

根据深度学习的基本框架&#xff0c;我们要做以下工作&#xff1a; 1&#xff0c;构建神经网络。 2&#xff0c;预处理数据。 3&#xff0c;用训练集训练权重。 4&#xff0c;用测试集进行测试。 首先我们从创建神经网络开始&#xff1a; 先上代码&#xff1a; import torc…

第五十回 插翅虎枷打白秀英 美髯公误失小衙内-mayfly-go:web 版 linux、数据库等管理平台

晁盖宋江和吴用到山下迎接雷横上山&#xff0c;宋江邀请雷横入伙&#xff0c;雷横以母亲年事已高为由拒绝了。 雷横回到郓城&#xff0c;听李小二说从东京新来了个表演的叫白秀英&#xff0c;吹拉弹唱跳&#xff0c;样样精通&#xff0c;于是雷横和李小二一起到戏院去看演出。…

【鸿蒙 HarmonyOS 4.0】多设备响应式布局

一、背景 在渲染页面时&#xff0c;需要根据不同屏幕大小渲染出不同的效果&#xff0c;动态的判断设备屏幕大小&#xff0c;便需要采用多设备响应式布局。这种设计方法能够动态适配各种屏幕大小&#xff0c;确保网站在不同设备上都能呈现出最佳的效果。 二、媒体查询&#xf…

js形参传递特殊字符

在前端我们给其他页面传值或者传数据到后台的时候&#xff0c;字符串经常将一些特殊符号识别成字符集。这种情况下会将数据打断或者打乱&#xff0c;比如字符串里面包含*/&这些符号的时候就会错误。 我们可以通过将字符中的特殊字符替换成十六进制的字符&#xff0c;一些特…

单例服务拆分为分布式架构

将独立业务服务拆分为分布式 为啥会有这个想法&#xff1f;因为我要造锤子&#xff0c;拿着造好的锤子&#xff0c;去找锤子&#xff0c;没有造锤子的经验无法找一个造锤子的坑。 现有情况说明 单机软件&#xff1a;就是将软件安装在自己的电脑上&#xff0c;自己用的那种&…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读!

一本书讲透ChatGPT&#xff0c;实现从理论到实践的跨越&#xff01;大模型技术工程师必读 个人简介前言内容简介作者简介专家推荐读者对象购买链接直播预告参与方式 个人简介 &#x1f3d8;️&#x1f3d8;️个人主页&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:…

Cisco Secure ACS 5.8.0.32 安装 + Crack 教程

Cisco Secure ACS 5.8.0.32 安装 Crack 教程 前言系统环境开始安装 开始破解导入授权文件 前言 在ESXi 6.7 上经历过无数次的安装尝试 测试了各种兼容版本都没有安装成功,记最后一次安装成功的过程. 系统环境 服务器 : Dell R720xd CPU : E5-2620 v2 系统 : ESXi 6.7…

SQL技巧笔记(一):连续3人的连号问题—— LeetCode601.体育馆的人流量

SQL 技巧笔记 前言&#xff1a;我发现大数据招聘岗位上的应聘流程都是需要先进行笔试&#xff0c;其中占比很大的部分是SQL题目&#xff0c;经过一段时间的学习之后&#xff0c;今天开了一个力扣年会员&#xff0c;我觉得我很有必要去多练习笔试题目&#xff0c;这些题目是有技…

C语言面试笔试||rtthread面试笔试全家桶

目录 1.rtthread内核框架与线程调度介绍 2.rtthread内核功能启动流程及汇编阶段 3.rtthread内存分布 4.内核对象管理系统 5.内核配置和剪裁 6.线程5种状态 7.进程与线程 8.CPU的内部结构 9.中断的优缺点 10.GPIO的输入输出模式 11.tcp为什么需要3次握手&#xff1f;…

基于粒子群优化算法的图象聚类识别matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于粒子群优化算法的图象聚类识别。通过PSO优化方法&#xff0c;将数字图片的特征进行聚类&#xff0c;从而识别出数字0~9. 2.测试软件版本以及运行结果展示 M…

It is also possible that a host key has just been changed

问题&#xff1a;ssh失败&#xff0c;提示如上图 分析: ssh的key存在上图里的路径里。 解决&#xff1a;win10删这个文件C:\Users\admin\.ssh\known_hosts , linux删这个文件.ssh\known_hosts ,或者删除这个文件里的制定ip的那一行&#xff0c;例如“106.1.1.22 ecdsa-sha2-…

SpringCloud-用nacos做服务注册与调用

步骤1&#xff1a;下载和安装Nacos 首先&#xff0c;你需要从Nacos的官方网站上下载并安装Nacos Server。根据你的操作系统选择合适的版本&#xff0c;并按照官方文档中的说明进行安装和配置。 步骤2&#xff1a;创建Spring Boot项目 在你喜欢的IDE中创建一个新的Spring Boot项…

VIMA:多模态提示的通用机器人操纵

机器人任务的表述有三种形式&#xff0c;分别是模仿one-shot演示、跟随语言指令、以及实现视觉目标。然而&#xff0c;这三种方式处理的任务不同&#xff0c;且模型也不同。基于提示的学习在自然语言处理领域展现了通用能力&#xff0c;单个模型可以处理各种各样的任务。VIMA是…

2024高频前端面试题 Vue2 和 Vue3 篇

* Vue2 和 Vue3的区别&#xff1a; 1&#xff09;双向数据绑定原理的区别 2&#xff09;根节点的不同 Vue2只能一个根节点 Vue3在组件中可以放置多个根节点 3&#xff09;Vue3中采用composition API vue2:采用的选项型API(opsition API) vue3:采用的组合型API(composition A…

2024第二次培训:win11系统下使用nginx、JDK、mysql搭建基于vue2、java前后端分离的web应用运行环境

一.背景 公司安排了带徒弟的任务&#xff0c;给培训写点材料。前面分开介绍了mysql、jdk、nginx的安装&#xff0c;都只是零星的介绍&#xff0c;只能算零散的学习。学习了有什么用呢&#xff1f;能解决什么问题&#xff1f;能完成什么工作&#xff1f; 今天我们要用之前的几篇…

蓝桥杯(3.5)

789. 数的范围 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int q sc.nextInt();int[] res new int[n];for(int i0;i<n;i)res[i] sc.nextInt();while(q-- ! 0) {int…

鱼哥赠书活动第⑩期:一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读

鱼哥赠书活动第⑩期&#xff1a; 内容简介&#xff1a;作者简介&#xff1a;读者对象&#xff1a;直播预告&#xff1a;购书链接&#xff1a;赠书抽奖规则:往期赠书福利&#xff1a; OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景&#xff0c…