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


    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 + "}";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上面的控制器方法形参名为 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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上面的示例中 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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    public class Address {
        private String province;
        private String city;
    }
    
    • 1
    • 2
    • 3
    • 4

    要传入 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);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    传入请求参数时,同一个参数名多次传入值即可,例如 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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

  • 相关阅读:
    vue-cli3.0初始化项目
    蓝色对比关系图表合集PPT模板
    《代码精进之路,从码农到工匠》读书笔记
    【Kettle】kettle | 数据表增量脚本 | 表输入变量
    九九重阳,永恒之约 | AIGC数字永生时代,揭示永生探索的全新维度!
    Kafka在美团数据平台的实践
    基于Redis的分布式锁安全吗?(上)
    【PCL自学:Segmentation4】基于Min-Cut点云分割
    【Linux】系统中安装Go环境
    blender导出UE4用的FBX骨骼动画
  • 原文地址:https://blog.csdn.net/Cey_Tao/article/details/126363150