自动封装前端参数

本文介绍了Spring MVC如何自动封装前端参数,包括参数封装为List、Map以及自定义类。通过实例展示了如何利用List接收同名参数的集合,如何使用Map接收所有参数并保存键值对,以及如何将参数封装到自定义的Person类中。

自动封装前端参数

除了用String类型或者基础数据类型接收参数,Spring MVC还可以帮我们使用集合框架或者自定义类自动封装前端的参数

参数封装为List

当同名的前端参数有多个时,可以使用一个List类,来作为请求接收方法的参数,参数名和请求中的参数名绑定,这样Spring MVC就会将这个参数封装成一个List类

@RestController
public class MyController {

    @GetMapping(path = "/user")
    public Map<String, Object> queryUser(@RequestParam String name, @RequestParam List<String> hobby) {
        HashMap<String, Object> result = new HashMap<>();
        result.put("name",name);
        result.put("hobby", hobby);
        return result;
    }
}

测试结果如下

在这里插入图片描述

参数封装为Map

我们还可以使用一个Map类,作为请求方法的参数,添加上@RequestParam注解,这样Spring MVC会将所有的参数以键值对的形式全部封装在这个Map类中,这个Map类可以是<String, String>的泛型,也可以是<String, Object>的泛型

@RestController
public class MyController {

    @GetMapping(path = "/user")
    public Map<String, String> queryUser(@RequestParam Map<String, String> params) {
        return params;
    }
}

测试结果如下

在这里插入图片描述

Map类被称为“万能的Map”,在很多种请求参数的封装中都可以用这种数据类型,除此之外他还适用于以下情况

  • 使用@PathVariable注解获取路径参数
  • 使用@RequestBody注解获取请求体中的参数
  • 使用@RequestHeader注解获取请求头中的参数
  • 作为方法参数将变量保存在request域中

参数封装为自定义类

Spring MVC还可以把前端参数封装成我们自定义的一个类

首先我们先定义一个自定义的Person类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {

    private String name;
    private int age;
}

在请求处理方法中,将一个Person对象作为参数,注意这里不需要添加@RequestParam注解

@RestController
public class MyController {

    @GetMapping(path = "/user")
    public Person queryUser(Person person) {
        return person;
    }
}

然后我们将Person类的属性作为在请求中携带的参数,这样就可以将请求中的参数转换成Person对象的属性

在这里插入图片描述

这种封装方式同样适用于使用@RequestBody注解获取请求体中的参数的情况

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值