目录
针对表单传参,@RequestBody只能有一个,无法在同一个方法形参中存在多个
五、@RequestParam+@PathVariable混合传递
六、@RequestBody+@PathVariable混合(同理)
一、@RequestParam
传递字符串
一、直接引用(无引用名)
(@RequestParam String 形参名)
二、设置别名
(@RequestParam("引用名") String 形参名) 可以加(value = "no",required = false)可以设置不传此参
@PostMapping("/test")
public String test(@RequestParam(value = "no",required = false) String no,@RequestParam String str1,@RequestParam("引用名") String 形参名)
{
return no+" is "+str1;
}
传递对象(前端传递的类的相关属性)
@PostMapping("/test")
public String test(User user)//这里不能加@RequestParam
{
System.out.println(user);
return user.getUid()+user.getPassword()+user.getName();
}
加了@RequestParam就不行,因为前端没有传递User类对象,只是一个JSON字符串
二、@PatnVariable
和上面@RequestParam一样的用法,但前端传递的时候不用写id=??,直接 /test1/(参数值1)/(参数值2)
@PostMapping("/test1/{id}/{name}")
public String path1(@PathVariable("id") Integer id,@PathVariable String name)
{
return id+" : "+name;
}
三、@RequestBody**
针对表单传参,@RequestBody只能有一个,无法在同一个方法形参中存在多个
一、传递基本参数(一般不用)
@RequestMapping("/bodytest")
public String path1(@RequestBody String name)
{
return name;
}
二、传递Json对象,可能不是User对象中的属性,用JSONObect类型接收(需要导入依赖fastjson)
导入依赖(fastjson):
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
{"name":"zz", "age":"12","index":"kk"} //Json对象
@RequestMapping("/bodyTest6")
public String bodyTest6(@RequestBody JSONObject p)
{
return "name:"+p.get("name")+"age:"+p.get("age")+"index:"+p.get("index");
}
二、传递对象类型参数(相通,只要前端传递的Json属性名和User类中的属性对应就行)
{"name":"zz"}
@RequestMapping("/bodytest")
public String path1(User user)
{
return user.getUid()+user.getPassword()+user.getName();
}
三、传递对象数组
[{"name":"zz"},{"uid":"11"}] --请求类型,传递User数组属性
@RequestMapping("/array2")
public List<User> array2(@RequestBody List<User> users)
{
return users;
}
四、HttpServletRequest
用HttpServletRequest类型接收,通过 .getParameter("前端传递的属性名") 获取相应的属性值
@RequestMapping("/test")
public String test(HttpServletRequest request){
return "id is :"+request.getParameter("id")+
" name is :"+request.getParameter("name");
}
五、@RequestParam+@PathVariable混合传递
用@RequestParam可以实现id的传递,用@PathVariable可以实现name传递
@RequestMapping("test/{name}")
public String test1(@RequestParam("id") String id,@PathVariable("name") String name ){
return "id:"+id+"name:"+name;
}
六、@RequestBody+@PathVariable混合(同理)
@PathVariable传递id,@RequestBody可以传递类属性
@RequestMapping("test/{id}")
public String test(@PathVariable("id") String id, @RequestBody User user){
return "id is "+ id+",name is "+ user.getName();
}
学习于【编程界小明哥】 原文链接:【精选】Springboot传参详解-CSDN博客