SpringBoot学习一:参数传递

1.get方式Url传参

@PathVariable

    @GetMapping("/hello/{name}")
    public String hello(@PathVariable("name") String name){
        //入参的name取名必须是一致的,但是形参name可以随便取名!
        System.out.println("获取到的值是:"+name);
        return "hello " + name;
    }
访问地址:http://localhost:8080/hello/xiwen

2.get方式Url传参

@RequestParam

备注:如果请求中参数的名字和方法中形参的名字一致,可以省略@RequestParam("name") 

    @GetMapping("/hello")
    public String hello(@RequestParam("name") String name){
        //入参的name取名必须是一致的,但是形参name可以随便取名!
        System.out.println("获取到的值是:"+name);
        return "hello " + name;
    }

访问地址:http://localhost:8080/hello?name=xiwen

3.get方式Url传参

@RequestParam 添加默认值 defaultValue  = “XXX”

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name",defaultValue = "xiwen") String name){
        //入参的name取名必须是一致的,但是形参name可以随便取名!
        System.out.println("获取到的值是:"+name);
        return "hello " + name;
    }

访问地址:http://localhost:8080/hello?name=xiwen

注意:如果没有给定默认值,并且没有给定参数将会报错,报错信息如下:

Required String parameter 'name' is not present:name参数没有提供

解决方案:

1.defaultValue  = “XXX” :使用默认值

2.required = false :标注参数是非必须的!

4.post方式传递参数

注意事项:看代码注释

      @PostMapping("/user")
      public String hello(@RequestParam("name") String name, String age){
          //入参的name取名必须是一致的,但是形参name可以随便取名!
          //如果入参和形参一直,@RequestParam("name")可以省略
          log.info("name=" + name + "age=" + age);

          return "name=" + name + "age=" + age;
      }

注:post不能直接用浏览器访问,这里测试可以用postman

5.post方式传递字符串文本

通过HttpServletRequest 获取输入流!

    @PostMapping("/postString")
    public java.lang.String postString(HttpServletRequest request){
        ServletInputStream is = null;
        StringBuilder sb = null;
        try {
            is = request.getInputStream();
            sb = new StringBuilder();
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = is.read(buf)) != -1){
                sb.append(new String(buf, 0, len));
            }
            System.out.println(sb.toString());
            return sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(is != null){
                    is.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return sb.toString();
    }

6.requestbody接收参数

1.@requestbody可以接收get或者post请求

2.把json作为参数传递,要用RequestBody

3.附带说一下使用postman方式设置content-type为applicantion/json方式测试后台接口

    @PostMapping("/save")
    @ResponseBody
    public Map<String,Object> save(@RequestBody User user){
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("user",user);
        return map;
    }

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

希文先森

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值