SpingMvc复杂参数传收总结

Posted java从心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpingMvc复杂参数传收总结相关的知识,希望对你有一定的参考价值。

每天进步一丢丢,连接梦与想


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

一.简单数组集合类

比如Long[],String[],List<User>

前端:

1.重复单个参数
 
   
   
 
  1. //(1)普通URL GET

  2. http://localhost:8080/ajaxGet?id=1&id=2&id=3

 
   
   
 
  1. //(2)Ajaxget方式 发送请求时等于(1)方式

  2.    $.ajax({

  3.        type: "GET",

  4.        url: "http://localhost:8080/ajaxGet?id=1&id=2&id=3"

  5.    });

 
   
   
 
  1. //(3)Form表单GET方式 发送请求时等于(1)方式

  2. <form id="fromGet" action="fromGet" method="GET">

  3.    <input type="text"name="id" value="1">

  4.    <input type="text"name="id" value="2">

  5.    <input type="text"name="id" value="3">

  6. </form>

 
   
   
 
  1. //(4)Form表单POST方式

  2. //发送请求参数会被拼接成 id=1&id=2&id=3 存储在请求体中

  3. <form id="fromGet" action="fromGet" method="POST">

  4.    <input type="text"name="id" value="1">

  5.    <input type="text"name="id" value="2">

  6.    <input type="text"name="id" value="3">

  7. </form>

后端SpringMvc:
 
   
   
 
  1. //数组

  2. public void ajaxGet(Long[] id){

  3. }

 
   
   
 
  1. //List集合

  2. public void ajaxGet(@RequestParam("id") List<Long> id){

  3. }

2.数组参数

前端:
 
   
   
 
  1. //(1)普通URL GET

  2. http://localhost:8080/ajaxGet?id[]=1&id[]=2&id[]=3

 
   
   
 
  1. //(2)Form GET方式(Ajax异步表单提交) 发送请求时等于(1)方式

  2. $.ajax({

  3.        type: "GET",

  4.        url: "http://localhost:8080/ajaxGet",

  5.        data: {"id":[1,2,3]},

  6.        contentType:'application/x-www-form-urlencoded'

  7.    });

 
   
   
 
  1. //(3)Form POST方式(Ajax异步表单提交)

  2. //发送请求参数会被拼接成 id[]=1&id[]=2&id[]=3 存储在请求体中

  3. $.ajax({

  4.        type: "POST",

  5.        url: "http://localhost:8080/ajaxPost",

  6.        data: {"id":[1,2,3]},

  7.        contentType:'application/x-www-form-urlencoded'

  8.    });

后端SpringMvc:
 
   
   
 
  1. //数组

  2. public void ajaxGet(@RequestParam("id[]") Long[] id){

  3. }

 
   
   
 
  1. //List集合

  2. public void ajaxGet(@RequestParam("id[]") List<Long> id){

  3. }


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

二.复杂实体类与集合

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

1.复杂实体类User

User实体类

 
   
   
 
  1. public class User {  

  2.    private String name;  

  3.    private String pwd;  

  4.    private List<User> customers;//属于用户的客户群

  5.    //省略getter/setter  

  6. }  

前端:
 
   
   
 
  1. //用户

  2. var user = {};

  3. user.name = "李刚";

  4. user.pwd = "888";

  5. //客户

  6. var customerArray = new Array();

  7. customerArray.push({name: "李四",pwd: "123"});

  8. customerArray.push({name: "张三",pwd: "332"});

  9. user. customers = customerArray;


  10. $.ajax({

  11.        type: "POST",

  12.        url: "http://localhost:8080/ajaxPost",

  13.        data: JSON.stringify(user),

  14.        contentType:'application/json;charset=utf-8'

  15.    });

后端SpringMvc:
 
   
   
 
  1. public void ajaxPost(@ResponBody User user){

  2. }


2.复杂集合 User[]、List<User> 、List<Map<String,Object>
前端:
 
   
   
 
  1. //用户

  2. var userList = new Array();  

  3. userList.push({name: "李四",pwd: "123"});  

  4. userList.push({name: "张三",pwd: "332"});  

  5. $.ajax({

  6.        type: "POST",

  7.        url: "http://localhost:8080/ajaxPost",

  8.        data: JSON.stringify(userList),

  9.        contentType:'application/json;charset=utf-8'

  10.    });

后端SpringMvc:
 
   
   
 
  1. public void ajaxPost(@ResponBody User[] user){

  2. }

 
   
   
 
  1. public void ajaxPost(@ResponBody List<User> user){

  2. }

 
   
   
 
  1. public void ajaxPost(@ResponBody List<Map<String,Object>> userMap){

  2. }


右下角点「好看」,每天好看一点!

SpingMvc复杂参数传收总结


 THANDKS

- End -

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

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



以上是关于SpingMvc复杂参数传收总结的主要内容,如果未能解决你的问题,请参考以下文章

Spingmvc框真的懂吗?

以下代码片段的算法复杂度

关于代码片段的时间复杂度

spingmvc入门篇 ,认识servlet

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

以下代码片段的时间复杂度是多少?