1、基本数据类型(这里String也可以用这个方式)
@RequestParam,POST和GET均支持 基本数据类型的参数中的注解
请求链接:/demo?name=t&name0=t0&name1=t1&name2=t2&name444=t44
@RequestMapping("demo")
public String demo(Model model//这个model现在用不到 是跟HTML前后端传值用的 代码中model变量是灰色的
// 走默认装配规则,参数名称和名字一致,选传
,String name
// 参数名称和名字默认一直,必传参数,不传报错 默认required = TRUE(代表必须传递这个参数不传报400)
,@RequestParam String name0
// 通过value属性定义名称,必传参数,不传报错 默认required = TRUE
,@RequestParam(value = "name1") String name1
// 通过name属性定义,非必传参数 required = false时可以不传递这个参数,默认为null
,@RequestParam(name = "name2",required = false) String name2
// 通过value属性定义,必传参数,有默认值,可以不传自动赋值,这时的required没用
,@RequestParam(value = "name3",defaultValue = "t3") String name3
// 自定义参数名字,不必加name或者value属性,必传
//自定义的参数名字 前台需要传递的时括号内的name444,后台是name4变量接收
,@RequestParam("name444") String name4
){
System.out.println("name:"+name);
System.out.println("name0:"+name0);
System.out.println("name1:"+name1);
System.out.println("name2:"+name2);
System.out.println("name3:"+name3);
System.out.println("name4:"+name4);
return "hello";
}
ps:设置默认required = TRUE的参数为必传参数,不传会报400错误--前后端参数对不上
@PathVariable,POST和GET均支持 这是路径的注解 详见代码和测试样例
请求连接:
/demo1/t1/t2?name=t0
/demo1/t1/t2/t3
/demo1/t1 ===> 404地址找不到
@RequestMapping(value={
"demo1/{name1}/{name2}/{name3}"
// 配合name3选传,此种场景应用较少,一般使用此注解均为必传参数
,"demo1/{name1}/{name2}"
})
public String demo1(Model model
//注意,没加注解,使用问号后追加参数请求
,String name
// 必传
,@PathVariable String name1
// 必传,前端也需要传递("name2")中的name2
,@PathVariable("name2") String name2
// 选传,存在选传的时候,注解@RequestMapping的value值也不能只写一个,需要写全相对应的路径
,@PathVariable(value = "name3",required = false) String name3
){
System.out.println("name:"+name);
System.out.println("name1:"+name1);
System.out.println("name2:"+name2);
System.out.println("name3:"+name3);
return "hello";
}
ps:必传参数,不传会报404错误-url不正确
二、普通对象(数组和这个基本一样)
非json请求
localhost:8080/demo2?name=1&number=2
@ResponseBody
@RequestMapping("demo2")
public Demo demo2(Demo demo){
System.out.println("demo:"+demo);
return demo;
}
json请求(后台记得写 @RequestBody 注解)
localhost:8080/demo22
===========headers==============
Content-Type:application/json
============body==============
{
"name":"11",
"number":"22"
}
@ResponseBody
@PostMapping("demo22")
public Demo demo22(@RequestBody Demo demo){
System.out.println("demo:"+demo);
return demo;
}
三、集合List
注意:不论传值是否是json类型,controller方法中的参数的@RequestParam注解和@RequestBody注解不可缺少
localhost:8080/demo4?idList=1&idList=2
或
http://localhost:8080/demo4?idList=1,2,3
@ResponseBody
@RequestMapping("demo4")
public List<Long> demo4(@RequestParam List<Long> idList){
System.out.println("ids:"+idList);
return idList;
}
=======================================================================
localhost:8080/demo5
===========headers==============
Content-Type:application/json
============body==============
[1,2,3]
@ResponseBody
@RequestMapping("demo5")
public List<Long> demo5(@RequestBody List<Long> idList){
System.out.println("ids:"+idList);
return idList;
}
四、对象+List同时接收(json形式举例)
demo类中有一个List属性
localhost:8080/demo7
===========headers==============
Content-Type:application/json
============body==============
{
"name":"张三",
"number":"20171004123",
"idList":[
{
"id":"2"
},
{
"id":"3"
},
{
"id":"4"
}
]
}
=================================================================
@ResponseBody
@RequestMapping("demo7")
public Demo demo7(@RequestBody Demo demo){
System.out.println("demo:"+demo);
return demo;
}