springboot controller参数注入使用示例

基本类型参数

以上为例,接收基本类型参数时,可以把 nameage 封装进对象,也可以不封装,执行结果是一样的。@RequestParam 也可以不用,只要接收的参数名和传输的参数名相等即可。get post 请求都可。

@PostMapping("/simpleField")
public String simpleField(@RequestParam("name") String name,@RequestParam("age") String age) {
    return name + age;
}

前端参数提交
不能使用 @RequestBody@RequestBody 指定参数接收 json 格式的数据,只能用封装类接收参数,错误使用的示例如下

@PostMapping("/t")
public String t(@RequestBody String a,String b) {
    return a + b;
}

在这里插入图片描述

接收对象类型参数

  1. 不使用 @RequestBody
    前端传输参数格式如 postman 所示,只需要参数名称能够对应即可,如果属性是对象,则使用.对象属性名来指明属性,如果属性是数组或者集合,则需要加上[下标]来指定下标。get post 请求都行。
@Data
public class Album {
    private Integer musicCount;
    private String[] musics;
    private List<Person> musicians;
    private Person[] people;
}
@RestController
@RequestMapping("/test")
public class TestController {
    @Resource
    private ObjectMapper json;

    @PostMapping("/test")
    public String test(Album album) throws JsonProcessingException {
        return json.writeValueAsString(album);
    }
}

前端传输参数格式

  1. 使用 @RequestBody

@RequestBody指定参数将接收json数据格式,需要把请求头的 Content-Type 设置为 application/json,按照上面的例子,前端传输的数据格式如下

@RestController
@RequestMapping("/test")
public class TestController {
    @Resource
    private ObjectMapper json;

    @PostMapping("/test")
    public String test(@RequestBody Album album) throws JsonProcessingException {
        return json.writeValueAsString(album);
    }
}

前端传输数据格式

接收对象类型数组时需要在数组参数前使用 @RequestBody@RequestBody 的作用是接收 json 格式的数据封装成对象。不使用 @RequestBody 的话会报没有默认构造函数的异常。

接收基本类型数组

接收基本类型数组的方式和接收基本类型一样,只要接收的参数名和传输的参数名相等即可。get post 请求都行。以下为例,有些前端传输的数组参数格式是 ?strs[]=strs1&strs[]=strs2,这种情况下可以在方法参数前使用 @RequestParam("strs[]") 来接收参数

@RestController
@RequestMapping("/test")
public class TestController {
    @Resource
    private ObjectMapper json;

    @PostMapping("/array")
    public String array(String[] strs,Integer[] ints) throws JsonProcessingException {
        return json.writeValueAsString(strs)+" "+json.writeValueAsString(ints);
    }
}

前端参数格式

接收基本类型集合

如果直接使用基本类型集合接收数据,则必须使用 @RequestBody ,不使用 @RequestBody 的话必须把集合封装进类,如本文 接收对象类型参数 所示,使用 @RequestBody 的示例如下

@PostMapping("/array")
public String test(@RequestBody List<String> names) throws JsonProcessingException {
    return json.writeValueAsString(names);
}

示例

接收对象类型数组和集合

接收对象类型数组和集合时如果不封装进实体类,则必须使用 @RequestBody,封装进实体类的方式见本文

接收对象类型参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值