Springboot传参类型

目录

一、@RequestParam

传递字符串

一、直接引用(无引用名)

二、设置别名

传递对象(前端传递的类的相关属性)

二、@PatnVariable

三、@RequestBody**

针对表单传参,@RequestBody只能有一个,无法在同一个方法形参中存在多个

四、HttpServletRequest

五、@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博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值