天天看点

SpringMVC前后端交互传参

注:本文仅做个人总结用,转载本博客文章时请注明出处

下面的前后端交互传参,有个大前提,前端的Request Headers 的Content-Type

不是 application/json

而是 application/x-www-form-urlencoded

1.后端获取数组

$axios.get('test/mvc/array?strs=111&strs=2222&strs=3333')

$axios.get('test/mvc/array?strs=111,2222,333')

@RequestMapping("array")

    public Object array(String[] strs){

       return strs;

    }

2.后端获取List,Set集合,泛型可以不指定,默认String字符串,而且必须加注解@RequestParam

$axios.get('test/mvc/list?list=111&list=2222&list=3333')

$axios.get('test/mvc/list?list=111,2222,333')

@RequestMapping("list")

    public Object list(@RequestParam List<String> list){

       return strs;

    }

3.后端获取Map键值对,Map的泛型指定无用,K,V均是String, 而且必须加注解@RequestParam,有多个key值相同时,value取第一个出现的值

$axios.get('test/mvc/map?list=111&list=2222&list=3333&a=aa&b=bb')

@RequestMapping("map")

    public Object map(@RequestParam Map map){

       return map;

    }

返回结果

{"list":"111","a":"aa","b":"bb"}

4.后端用对象获取

@RequestMapping("dto")

    public Object dto(SelfDefineDto dto){

       return dto;

    }

public class SelfDefineDto {//自定义Dto

   private Date date;

   private String[] array;

   private List<String> list;

private Set<Integer> list;

private Map<String,Object> list;

private List<Map<String,Object>> mapList;

   private String str;

   private Integer integer;

   @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

   private Date dateStr;

}

4.1数组,List,Set集合,其中Set集合不能用第三种下标[n]

$axios.get('test/mvc/dto?list=111&list=2222&list=3333')

$axios.get('test/mvc/dto?list=111,2222,3333')

$axios.get('test/mvc/dto?list[0]=111&list[1]=2222&list[3]=3333')

4.2 map键值对

$axios.get('test/mvc/dto?map[a]=a&map[a]=aa&map[b]=bb&map[c]=33')

{"map":{"a":["a","aa"],"b":"bb","c":"33"}

4.3 map键值对集合

$axios.get('test/mvc/dto?mapList[0][a]=a&mapList[0][a]=aa&map[b]=bb&mapList[0][c]=33')

{"mapList":[{"a":["a","aa"],"b":"bb","c":"33"}]}

4.4 对象用.属性

$axios.get('test/mvc/dto?user.id=1&user.username=jack')

{"user":{"id":1,"username:"jack","age":null}

继续阅读