Spring Mvc 参数传递

1、基本数据类型(这里String也可以用这个方式)

@RequestParam,POST和GET均支持 基本数据类型的参数中的注解

请求链接:/demo?name=t&name0=t0&name1=t1&name2=t2&name444=t44

@RequestMapping("demo")
public String demo(Model model//这个model现在用不到 是跟HTML前后端传值用的 代码中model变量是灰色的
    // 走默认装配规则,参数名称和名字一致,选传
    ,String name

     // 参数名称和名字默认一直,必传参数,不传报错  默认required = TRUE(代表必须传递这个参数不传报400)
    ,@RequestParam String name0

    // 通过value属性定义名称,必传参数,不传报错  默认required = TRUE
    ,@RequestParam(value = "name1") String name1  

     // 通过name属性定义,非必传参数 required = false时可以不传递这个参数,默认为null
    ,@RequestParam(name = "name2",required = false) String name2

     // 通过value属性定义,必传参数,有默认值,可以不传自动赋值,这时的required没用
    ,@RequestParam(value = "name3",defaultValue = "t3") String name3

    // 自定义参数名字,不必加name或者value属性,必传
    //自定义的参数名字  前台需要传递的时括号内的name444,后台是name4变量接收
    ,@RequestParam("name444") String name4
){
    System.out.println("name:"+name);
    System.out.println("name0:"+name0);
    System.out.println("name1:"+name1);
    System.out.println("name2:"+name2);
    System.out.println("name3:"+name3);
    System.out.println("name4:"+name4);
    return "hello";
}

ps:设置默认required = TRUE的参数为必传参数,不传会报400错误--前后端参数对不上

@PathVariable,POST和GET均支持 这是路径的注解 详见代码和测试样例

请求连接:

/demo1/t1/t2?name=t0

/demo1/t1/t2/t3

/demo1/t1 ===> 404地址找不到

@RequestMapping(value={
        "demo1/{name1}/{name2}/{name3}"

        // 配合name3选传,此种场景应用较少,一般使用此注解均为必传参数
        ,"demo1/{name1}/{name2}"
})
public String demo1(Model model
        //注意,没加注解,使用问号后追加参数请求
        ,String name

        // 必传
        ,@PathVariable String name1

        // 必传,前端也需要传递("name2")中的name2
        ,@PathVariable("name2") String name2

        // 选传,存在选传的时候,注解@RequestMapping的value值也不能只写一个,需要写全相对应的路径
        ,@PathVariable(value = "name3",required = false) String name3

){
    System.out.println("name:"+name);
    System.out.println("name1:"+name1);
    System.out.println("name2:"+name2);
    System.out.println("name3:"+name3);
    return "hello";
}

ps:必传参数,不传会报404错误-url不正确

二、普通对象(数组和这个基本一样)

非json请求

localhost:8080/demo2?name=1&number=2




@ResponseBody
@RequestMapping("demo2")
public Demo demo2(Demo demo){
    System.out.println("demo:"+demo);
    return demo;
}

json请求(后台记得写 @RequestBody 注解)

localhost:8080/demo22
===========headers==============
Content-Type:application/json
============body==============
{
    "name":"11",
    "number":"22"
}



@ResponseBody
@PostMapping("demo22")
public Demo demo22(@RequestBody Demo demo){
    System.out.println("demo:"+demo);
    return demo;
}

三、集合List

注意:不论传值是否是json类型,controller方法中的参数的@RequestParam注解和@RequestBody注解不可缺少

localhost:8080/demo4?idList=1&idList=2
或
http://localhost:8080/demo4?idList=1,2,3


@ResponseBody
@RequestMapping("demo4")
public List<Long> demo4(@RequestParam List<Long> idList){
    System.out.println("ids:"+idList);
    return idList;
}

=======================================================================
localhost:8080/demo5
===========headers==============
Content-Type:application/json
============body==============
[1,2,3]

@ResponseBody
@RequestMapping("demo5")
public List<Long> demo5(@RequestBody List<Long> idList){
    System.out.println("ids:"+idList);
    return idList;
}

四、对象+List同时接收(json形式举例)

demo类中有一个List属性

localhost:8080/demo7 
===========headers==============
Content-Type:application/json
============body==============
{
    "name":"张三",
    "number":"20171004123",
    "idList":[
        {
            "id":"2"
        },
        {
            "id":"3"
        },
        {
            "id":"4"
        }
    ]
}
=================================================================
@ResponseBody
@RequestMapping("demo7")
public Demo demo7(@RequestBody Demo demo){
    System.out.println("demo:"+demo);
    return demo;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值