上一篇文章[javaWeb传收参数方式总结]总结了简单传收参数,这一篇讲如何传收复杂参数,比如Long[] 、User(bean里面包含List)、User[]、List、List<Map<String,Object>等几种复杂参数。

一.简单数组集合类

比如Long[],String[],List等

前端:

1.重复单个参数
//(1)普通
http://localhost:8080/ajaxGet?id=1&id=2&id=3
//(2)Ajaxget方式 发送请求时等于(1)方式
$.ajax({
type: "GET",
url: "http://localhost:8080/ajaxGet?id=1&id=2&id=3"
});
//(3)Form表单GET方式 发送请求时等于(1)方式
<form id="fromGet" action="fromGet" method="GET">
<input type="text"name="id" value="1">
<input type="text"name="id" value="2">
<input type="text"name="id" value="3">
</form>
//(4)Form表单POST方式
//发送请求参数会被拼接成 id=1&id=2&id=3 存储在请求体中
<form id="fromGet" action="fromGet" method="POST">
<input type="text"name="id" value="1">
<input type="text"name="id" value="2">
<input type="text"name="id" value="3">
</form>
后端SpringMvc:
//数组
public void ajaxGet(Long[] id){
}
//List集合
public void ajaxGet(@RequestParam("id") List<Long> id){
}

2.数组参数

前端:
//(1)普通url
http://localhost:8080/ajaxGet?id[]=1&id[]=2&id[]=3
//2.Form GET方式(Ajax异步表单提交) 发送请求时等于(1)方式
$.ajax({
type: "GET",
url: "http://localhost:8080/ajaxGet",
data: {"id":[1,2,3]},
contentType:'application/x-www-form-urlencoded'
});
//(3)Form POST方式(Ajax异步表单提交)
//发送请求参数会被拼接成 id[]=1&id[]=2&id[]=3 存储在请求体中
$.ajax({
type: "POST",
url: "http://localhost:8080/ajaxPost",
data: {"id":[1,2,3]},
contentType:'application/x-www-form-urlencoded'
});
后端SpringMvc:
//数组
public void ajaxGet(@RequestParam("id[]") Long[] id){
}
//List集合
public void ajaxGet(@RequestParam("id[]") List<Long> id){
}

其实以上两种都是一个道理,主要是看发送请求时 参数是id还是id[](可使用浏览器的F12开发者工具查看network请求),来决定后端使不使用@RequestParam(“id[]”)进行数据绑定

二.复杂实体类与集合

比如User(bean里面包含List)、User[]、List、List<Map<String,Object>等,此种类型均使用Json提交

1.复杂实体类User

User实体类

//User实体类
public class User {
private String name;
private String pwd;
private List<User> customers;//属于用户的客户群
//省略getter/setter
}
前端:
//用户
var user = {};
user.name = "李刚";
user.pwd = "888";
//客户
var customerArray = new Array();
customerArray.push({name: "李四",pwd: "123"});
customerArray.push({name: "张三",pwd: "332"});
user. customers = customerArray; $.ajax({
type: "POST",
url: "http://localhost:8080/ajaxPost",
data: JSON.stringify(user),
contentType:'application/json;charset=utf-8'
});
后端SpringMvc:
 public void ajaxPost(@ResponBody User user){
}
前端:
//用户
var userList = new Array();
userList.push({name: "李四",pwd: "123"});
userList.push({name: "张三",pwd: "332"});
$.ajax({
type: "POST",
url: "http://localhost:8080/ajaxPost",
data: JSON.stringify(userList),
contentType:'application/json;charset=utf-8'
});
后端SpringMvc:
 public void ajaxPost(@ResponBody User[] user){
}
 public void ajaxPost(@ResponBody List<User> user){
}
 public void ajaxPost(@ResponBody List<Map<String,Object>> userMap){
}

THANDKS

  • End -

一个立志成大腿而每天努力奋斗的年轻人

伴学习伴成长,成长之路你并不孤单!

SpingMvc复杂参数传收总结的更多相关文章

  1. javaWeb传收参数方式总结

    有时候,我真会被传参搞得头晕,这样传要怎么接收,那样传又要怎么接收? get可以json吗?什么是json方式提交?等等问题,已困扰我许久 所以,在此想做个总结,整理一下思绪,不再为传收参烦恼!如有错 ...

  2. Jmeter----A接口response中body的某一个参数传递给B接口request的body中使用(参数的传递)

    示例:将接口"获取待办列表"response中body的id值传递给接口"删除待办"request的body中使用: 操作步骤如下: 第一步:给"获取 ...

  3. 通过BeanShell获取UUID并将参数传递给Jmeter

    有些HTTPS请求报文的报文体中包含由客户端生成的UUID,在用Jmeter做接口自动化测试的时候,因为越过了客户端,直接向服务器端发送报文,所以,需要在Jmeter中通过beanshell获取UUI ...

  4. C/C++语言中的函数参数传参三种对比

    学了很长时间C/C++有时指针方面还是有点乱. 希望大神发现如果下面有不对的地方请指出.我发现之所以我乱就是因为中文表述不准确的问题,比如 ,地址值和地址 #include <iostream& ...

  5. java基础之对象当做参数传进方法的堆栈内存解析

    值类型当做参数传进方法: 引用类型对象当做参数传进方法: String字符串当做参数传进方法:

  6. Delphi线程类 DIY(把类指针作为参数传进去,就可以执行类里面的方法啦)

    Delphi 封装了一个很强大的线程类 TThread, 我们也自己动手制作一个简单的线程类 首先Type一个类 type TwwThread = class constructor Create;  ...

  7. C#程序调用CMD执行命令,将参数传递给cmd.exe

    proc.StartInfo.Arguments = "/c ping 10.2.2.125"; C#程序调用CMD执行命令 将参数传递给cmd.exe的(Passing an a ...

  8. spring boot 参数传递(spring boot 参数传数 arg0 每一个参数 arg0#{arg0},arg1 #{arg1})

    spring boot 参数传数 arg0 每一个参数 arg0#{arg0},arg1  #{arg1} @Select("select * from sys_user where nam ...

  9. spingMVC异步上传文件

    框架是个强大的东西,一般你能想到的,框架都会帮你做了,然后只需要会用就行了,spingmvc中有处理异步请求的机制,而且跟一般处理请求的方法差别不大,只是多了一个注解:spingmvc也可以将stri ...

随机推荐

  1. vue-learning:24 - component - 目录

    component 组件 组件的概念 Vue 组件同时也都是 Vue 实例,可接受相同的选项对象option (除了一些根级特有的选项) 和使用相同的生命周期钩子,以及模板调用方式. 组件的构建和注册 ...

  2. FFT NTT 错误总结(持续更新)

    FFT NTT错误总结 1 处理\(r\)数组时忘记赋值 r[i] = (r[i >> 1] >> 1) | ((i & 1) << (l - 1)); 2 ...

  3. 纯CSS制作空心三角形和实心三角形及其实现原理

    纯CSS制作空心三角形和实心三角形及其实现原理 在一次项目中需要使用到空心三角形,我瞬间懵逼了.查阅了一些资料加上自己的分析思考,终于是达到了效果,个人感觉制作三角形是使用频率很高的,因此记录下来,供 ...

  4. RocketMQ各组件介绍

    Rocket 架构主要分为4部分: Producer 消息发布者,支持分布式集群部署.Produer 通过 MQ 负载均衡模块选择相应 Broker 中的 queue 进行消息投递,投递过程支持快速失 ...

  5. 【Docker Compose】简介与安装

    1.简介 Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置 ...

  6. 【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务

    本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https: ...

  7. $POJ$3252 $Round\ Numbers$ 数位$dp$

    正解:数位$dp$ 解题报告: 传送门$w$ 沉迷写博客,,,不想做题,,,$QAQ$口胡一时爽一直口胡一直爽$QAQ$ 先港下题目大意嗷$QwQ$大概就说,给定区间$[l,r]$,求区间内满足二进制 ...

  8. 「UVA10810」Ultra-QuickSort 解题报告

    题面 看不懂?! 大概的意思就是: 给出一个长度为n的序列,然后每次只能交换相邻的两个数,问最小需要几次使序列严格上升 不断读入n,直到n=0结束 思路: 交换相邻的两个数,这不就类似冒泡排序吗?但是 ...

  9. DNS服务器红帽5.4搭建图文教程!!!

    DNS服务器 挂载光盘 mount 查看光盘所在位置 mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 所有软件包都在Server目录下 rpm -ivh /mnt/Serv ...

  10. HTTP Strict Transport Security (HSTS) in ASP.NET Core

    本文是<9012年了,还不会Https>的后篇,本文着重聊一聊 HTTP Strict Transport Security协议的概念和应用. 启用HTTPS还不够安全 站点通过HTTPS ...