作者简介
一、@RequestParam
- 传递基本类型参数
@RequestMapping("QueryStringTest1")
public String QueryStringTest1(@RequestParam("id") String id,@RequestParam("name") String name){
return "id is "+ id+",name is "+ name;
}
Postman 中调用
- 省略1
@RequestMapping("QueryStringTest2")
public String QueryStringTest2(@RequestParam String id,@RequestParam String name){
return "id is "+ id+",name is "+ name;
}
注意:因为有RequestParam注解的存在,所以传参必须包含所有使用RequestParam注解的接收参数,否则会报错(允许传空,但是必须包含参数);
可以使用@RequestParam(value = “id”,required = false) 的方式,让id未传也可以。
- 省略2
@RequestMapping("QueryStringTest3")
public String QueryStringTest3(String id, String name){
return "id is "+ id+",name is "+ name;
}
允许其中的参数不传,不会报错,但取值为null,比如name不传
@RequestMapping("QueryStringTest4")
public String QueryStringTest4(@RequestParam("id") String myId,@RequestParam("name") String myName){
return "myId is "+ myId+",myName is "+ myName;
}
- 传递对象类型参数
@RequestMapping("objectTest1")
public String objectTest1(User user){
return "user.id is "+ user.getId()+",user.name is "+ user.getName();
}
@RequestMapping("objectTest3")
public String objectTest3(@RequestParam User user){
return "user.id is "+ user.getId()+",user.name is "+ user.getName();
}
- 传递数组、集合类型
- 数组
@RequestMapping("arrayTest1")
public String[] arrayTest1(@RequestParam String[] name){
for (String temp:name){
System.out.println(temp);
}
return name;
}
- 集合
@RequestMapping("listTest1")
public List listTest1(@RequestParam List name){
for(int i=0;i<name.size();i++){
System.out.println("list name==="+name.get(i));
}
return name;
}
二、@PathVariable
路径传参方式是将参数直接包含在URL路径中,比如URL/paramValue1/paramValue2
- 传递基本类型参数
@RequestMapping("pathTest1/{id}/{name}")
public String pathTest1(@PathVariable("id") String id, @PathVariable("name") String name){
return "id is "+ id+",name is "+ name;
}
@RequestMapping("pathTest2/{id}/{name}")
public String pathTest2(String id,String name){
return "id is "+ id+",name is "+ name;
}
- 传递数组、集合类型
- 数组
@RequestMapping("pathArrayTest1/{name}")
public String[] pathArrayTest1(@PathVariable("name") String[] names){
for (String name:names){
System.out.println("array name:"+name);
}
return names;
}
- 集合
@RequestMapping("pathListTest1/{name}")
public List pathListTest1(@PathVariable("name") List names) {
for (int i=0;i<names.size();i++) {
System.out.println("list name:" + names.get(i));
}
return names;
}
- 文件
// MultipartFile接收
@PostMapping("upload")
public String uploadFile(@RequestParam("file") MultipartFile myFile){
return "type:"+myFile.getContentType()
+" fileName:"+myFile.getOriginalFilename()
+" size:"+myFile.getSize();
}
测试的注意点
三、@RequestBody
- 传递基本类型参数
@RequestMapping("bodyTest1")
public String bodyTest1(@RequestBody String name){
return "name is:"+name;
}
2. 传递对象类型参数
@RequestMapping("bodyTest2")
public String bodyTest2(@RequestBody User user){
return "name is:"+user.getName() + " age is:"+user.getAge();
}
3. 传递数组、集合类型
- 数组
@RequestMapping("bodyTest3")
public String bodyTest3(@RequestBody String[] users){
return Arrays.asList(users).toString();
}
- 集合
@RequestMapping("bodyTest4")
public String bodyTest4(@RequestBody List<User> users){
return users.toString();
}
@RequestMapping("bodyTest5")
public String bodyTest5(@RequestBody List<String> users){
return users.toString();
}
*Json对象
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
@RequestMapping("bodyTest6")
public String bodyTest6(@RequestBody JSONObject user){
return "name is :"+user.get("name")+
" age is :"+user.get("age");
}
四、HttpServletRequest
@RequestMapping("httpRequest")
public String httpRequest(HttpServletRequest request){
return "name is :"+request.getParameter("name")+
" age is :"+request.getParameter("age");
}
或者
五、@PathVariable+@RequestParam混合
@RequestMapping("pathAndParam/{id}")
public String pathAndParam(@PathVariable("id") String id, @RequestParam("name") String name){
return "id is "+ id+",name is "+ name;
}
六、@PathVariable+@RequestBody混合
@RequestMapping("pathAndBody/{id}")
public String pathAndBody(@PathVariable("id") String id, @RequestBody User user){
return "id is "+ id+",name is "+ user.getName();
}
七、无注解传参
@RequestMapping("other")
public String other(User user){
return "name is:"+user.getName() + " age is:"+user.getAge();
}
小结
这节总结了“ Springboot传参详解 ”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】, 如果有兴趣跟小明哥一起学习Java和前端的,【关注一波】不迷路哦。
请到文章下方帮忙【一键三连】谢谢哈!
热门专栏推荐
【1】Java小游戏(俄罗斯方块、飞机大战、植物大战僵尸等)
【2】JavaWeb项目实战(图书管理、在线考试、宿舍管理等)
【3】JavaScript精彩实例(飞机大战、贪吃蛇、验证码等)
【4】Java小白入门200例
【5】从零学Java、趣学Java
【6】Idea从零到精通