[SpringMVC笔记] SpringMVC-05-不同类型的参数传递

本文详细介绍了SpringMVC中不同类型的参数传递方式,包括使用@RequestParam注解进行普通参数和必需性设置,通过POJO类接收复杂参数,以及处理数组和集合参数的方法。示例代码展示了如何接收和处理这些参数,帮助开发者更好地理解和应用SpringMVC框架。
摘要由CSDN通过智能技术生成

SpringMVC-05-不同类型的参数传递

1、@RequestParam 注解

注解在 Controller 方法形参之前,用于绑定请求参数与形参,类似于 MyBatis 中的 @Param 注解

    @RequestMapping("/paramDemo")
    @ResponseBody
    public String paramDemo(@RequestParam("name") String username, Integer age) {
        System.out.println("普通参数传递 username = " + username);
        System.out.println("普通参数传递 age = " + age);
        return "{'username'='" + username + "','age'=" + age + "}";
    }

上面的控制器方法形参名为 username,但绑定了名为 name 的请求参数,所有发送请求时应该以 name 为请求参数名,而不能用 username

[补充]

  • 注解了 @RequestParam 之后,参数变成了必传参数,若请求中不包含此参数会报错
  • @RequestParam 中有 required 属性,表示参数是否必需,默认为 true,设置为 false 则可以不传入此请求参数
  • @RequestParam 中还有 defaultValue 属性,表示未传入此参数时的默认值,设置后也可以不传入此请求参数
2、POJO 类型参数

请求参数名与形参对象属性名相同,定义 POJO 类型形参即可接收

    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user) {
        System.out.println("pojo 参数传递 User = " + user);
        return user.toString();
    }

上面的示例中 User 类中有 username 和 age 属性,则请求中只需要传入这两个属性值即可,名称要保持一致,例如 localhost/pojoParam?username=Alice&age=18

[注意]

  • POJO 类需要无参构造器和 setter 方法
2、嵌套 POJO 参数

和 POJO 传递方法相同,只需要把类中的各个属性传入即可,类内嵌套的类中的属性用 属性名.属性名 来传递

比如下面两个类的嵌套(省略成员方法)

public class User {
    private String username;
    private Integer age;
    private Address address;
}
public class Address {
    private String province;
    private String city;
}

要传入 User 类则需要 传入 username、age、address.province、address.city 四个属性(注意 address 是属性名而不是类名)

4、数组参数
 @RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] array) {
        System.out.println("数组参数传递 array = " + Arrays.toString(array));
        return Arrays.toString(array);
    }

传入请求参数时,同一个参数名多次传入值即可,例如 localhost/arrayParam?array=q&array=w&array=e&array=r 得到 array = [q, w, e, r]

5、集合保存普通参数

与数组参数类似,但需要注解 @RequestParam 绑定参数关系,传入请求参数的方式与传入数组相同

    @RequestMapping("/listParam")
    @ResponseBody
    public String arrayParam(@RequestParam List<String> list) {
        System.out.println("列表参数传递 list = " + list);
        return list.toString();
    }

视频链接:https://www.bilibili.com/video/BV1Fi4y1S7ix?p=50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值