springmvc,5种类型参数传递

首先应当明确,哪五种?

  1. 普通参数:请求参数名与形参名不同时。
    什么意思?下面的图可以更加直观的明白,其实这个作用是在方便客户这一块,后端定义了userName吧,现在前端输入user就可以了,不用输入username,但是需要声明一下,@RequestParam("name") ,用这个声明。
    在这里插入图片描述
    用postman访问/commonParamDifferentName,这个地址,虽然方法里面定义的是userName,但是它关联了name,因此前端可以输入name来传参,而且,并不能使用username,也就是说,关联了其他的内容,自己的东西就用不了了。

在这里插入图片描述

在这里插入图片描述

  1. POJO参数。这个东西就是一个表里面的一个整合,比如说一个user的pojo类,里面有name和age两个字段,用户访问指定的路径的时候,输好这个pojo的类属性就可以直接封装成一个user类。
    如下图,我这里有个pojo类user,里面就是name和age属性。
    在这里插入图片描述
    下面是controller层的写法,传入的参数直接是一个user对象。
    在这里插入图片描述
    现在用postman访问这个路径,下面有返回结果,说明是访问成功了。
    在这里插入图片描述
  2. 嵌套POJO参数。嵌套也好理解, 在我这个例子里就是user表嵌套了address表。
    在这里插入图片描述
    嵌套的这个controller层里面的东西还是和上面一样的。
    在这里插入图片描述
    现在使用postman去访问上面的路径,这里存在嵌套pojo类,在输入参数的时候就需要注意一下写法。
    在这里插入图片描述
  3. 数组参数。这个就好理解了,数组嘛,多选嘛,一个变量,多个结果,比如需要统计用户的爱好,那一个likes字段让用户进行多选,唱、跳、rap、篮球都可以是用户的爱好,都可以传进来。

在这里插入图片描述
下面使用postman去访问上面的路径。spring会帮助我们直接封装好。
在这里插入图片描述
5. 集合参数。用这个集合的话和数组大致是差不多的,只有两个地方不一样,一个是拿过来的类型,这个不用说,现在这个肯定是封装成集合了,第二个就是需要注释。告诉spring,我这个是个集合。

在这里插入图片描述
下面是全部的代码:

//请求参数
@Controller
public class UserController {

    //普通参数:请求参数与形参名称对应即可完成参数传递
    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name ,int age){
        System.out.println("普通参数传递 name ==> "+name);
        System.out.println("普通参数传递 age ==> "+age);
        return "{'module':'common param'}";
    }

    //普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系
    @RequestMapping("/commonParamDifferentName")
    @ResponseBody
    public String commonParamDifferentName(@RequestParam("name") String userName , int age){
        System.out.println("普通参数传递 userName ==> "+userName);
        System.out.println("普通参数传递 age ==> "+age);
        return "{'module':'common param different name'}";
    }

    //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user){
        System.out.println("pojo参数传递 user ==> "+user);
        return "{'module':'pojo param'}";
    }

    //嵌套POJO参数:嵌套属性按照层次结构设定名称即可完成参数传递
    @RequestMapping("/pojoContainPojoParam")
    @ResponseBody
    public String pojoContainPojoParam(User user){
        System.out.println("pojo嵌套pojo参数传递 user ==> "+user);
        return "{'module':'pojo contain pojo param'}";
    }

    //数组参数:同名请求参数可以直接映射到对应名称的形参数组对象中
    @RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] likes){
        System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
        return "{'module':'array param'}" + Arrays.toString(likes);
    }

    //集合参数:同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据
    @RequestMapping("/listParam")
    @ResponseBody
    public String listParam(@RequestParam List<String> likes){
        System.out.println("集合参数传递 likes ==> "+ likes);
        return "{'module':'list param'}" ;
    }

总结一下

  1. 两个需要注解的地方,一个是给参数定义别名的时候,定了别名是给前端用的。另一个是声明集合的时候。
  2. pojo类嵌套的时候被嵌套的需要写全,比如address.city。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值