SpringBoot接收参数的几种方式

1、通过HttpServletRequest 接收参数

在方法的形参中定义HttpServletRequest。

 @GetMapping("/login")
 public viod login(HttpServletRequest request) {
        //getParameter括号里面的参数名字必须和前端传过来的名字一样
        //例如:http://127.0.0.1/user/login?userName=zs&pwd=123
        String userName = request.getParameter("userName");
        String pwd = request.getParameter("pwd");
    }

2、通过@RequestParam接收参数

在方法的形参中加入@RequestParam注解。

    @RequestMapping("/login")
    public void login(@RequestParam(value="name" ,required=true) String userName,
                     @RequestParam(value="pwd" ,required=true) String password,
                     HttpServletResponse response) {
        // @RequestParam(value="name" ,required=true) required=true传入的值不允许为空
        // URL: http://127.0.0.1/user/login?name=zs&pwd=123
        System.out.println(userName + "||" + password);
    }

@RequestParam有可以有三个参数:

  1. value:参数名,必写(需要和传过来的参数名命名一致)
  2. required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
  3. defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

 注意!!!
传入Date类型的时候要加注解

(@PathVariable Long id, @PathVariable status,
                                  @RequestParam(value = "maintenanceStarTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date maintenanceStarTime,
                                  @RequestParam(value = "maintenanceEndTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date maintenanceEndTime)

3、 通过@PathVariable接收参数

在方法的形参中加入@PathVariable注解,进行绑定占位符。

  • 若方法参数名称和需要绑定的url中变量名称一致时,可以简写:
@RequestMapping("/login/{userName}/{pwd}")
    public void loginTwo(@PathVariable String userName,
                        @PathVariable String pwd) {
        // URL: http://127.0.0.1/user/login/zs/123
        System.out.println(userName + "||" + pwd);
    }

  • 若方法参数名称和需要绑定的url中变量名称不一致时,写成:
 @RequestMapping("/login/{userName}/{pwd}")
    public void loginTwo(@PathVariable("userName") String name,
                        @PathVariable String pwd) {
        // URL: http://127.0.0.1/user/login/zs/123
        System.out.println(name + "||" + pwd);
    }

  •  若传参可以为空时:
    //需要写两个url路径,匹配传参为空和不为空
    @RequestMapping(value={"/login/{pwd}","/login/{userName}/{pwd}"})
        //将@PathVariable("userName")改为@PathVariable(name="userName",required = false)
        public void loginTwo(@PathVariable(name="userName",required = false) String name,
                            @PathVariable String pwd) {
            // URL: http://127.0.0.1/user/login/zs/123
            System.out.println(name + "||" + pwd);
        }

 4、通过@RequestBody 接收参数

在方法的形参中加入@RequestBody 注解,进行接收json格式的请求体。用来处理application/jsonapplication/xml等类型的数据。

!注意:

  • 在GET请求中,不能使用@RequestBody。
 @RequestMapping("/login")
    public void loginTwo(@RequestBody User user) {
        System.out.println(user);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值