前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot参数传递

SpringBoot参数传递

作者头像
DataScience
发布2020-01-02 17:16:39
4.5K0
发布2020-01-02 17:16:39
举报
文章被收录于专栏:A2DataA2Data

本文标识 : jsbt0003

本文编辑 : Jack 风

编程工具 : IDEA

阅读时长 : 7分钟

::: 参数传递: 参数传递可以说是服务端和外界沟通的主要方式, 这节是非常重要的! :::

本节内容包括:

代码语言:javascript
复制
通过url传参
    |---get方式Url传参  
        |---@PathVariable 即:url/id/2019 形式        
        |---@RequestParam 即:url?username=a2data形式  
    |---POST方式传参      
        |---@RequestParam        
        |---请求体中加入文本
配置文件传参

1、get方式Url传参:

@PathVariable

代码语言:javascript
复制
@RestController
public class HelloController {    
    @GetMapping("/hello/{name}")    
    public String hello(@PathVariable("name") String name){        
        // 形参的name可以随意        
        System.out.println("获取到的name是:"+name);        
        return "hello ,您好,感谢 "+name+"对A2Data的关注";   
    }
}
  • 访问:http://localhost:8080/hello/jackfeng

2、get方式Url传参:

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

代码语言:javascript
复制
@GetMapping("/hello")
public String hello(@RequestParam("name") String name){    
    System.out.println("获取到的name是:"+name);    
    return "hello "+name;
}
  • 访问:http://localhost:8080/user?name=a2data

3、get方式Url传参:

@RequestParam+默认参数

代码语言:javascript
复制
@GetMapping("/hello")
    public String hello(@RequestParam(value = "name",defaultValue = "a2data") String name){
            System.out.println("获取到的name是:"+name);
            return "hello "+name;    
    }
  • 访问:http://localhost:8080/user?name=a2data

注意:如果没有指定默认值,并且没有传递参数将会报错

RequiredStringparameter'name'isnotpresent :name参数没有提供

  • 解决方案
  • 1.defaultValue = "xxx" :使用默认值
  • 2.required = false :标注参数是非必须的
代码语言:javascript
复制
@GetMapping("/hello")
public String hello(@RequestParam(value = "name",required = false) String name){
    System.out.println("获取到的name是:"+name);    
    return "hello "+name;
}

4、POST方式传递数据

代码语言:javascript
复制
@RestController
public class HelloController {
    public static Logger log = LoggerFactory.getLogger(HelloController.class);
    
    @PostMapping("/user")
    public String add(@RequestParam("name") String name,@RequestParam("age") Integer age){        
        log.info(name+"  "+age);        
        return "name:"+name+"\nage:"+age;    
    }
}

post不能用浏览器直接访问,这里用Postman测试:

5、POST传递字符串文本

通过HttpServletRequest获取输入流

代码语言:javascript
复制
@PostMapping("/PostString")
public String postString(HttpServletRequest request) {
    ServletInputStream is = null;   
    try {       
        is = request.getInputStream();       
         StringBuilder 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 (IOException e) {     
                 e.printStackTrace();      
           }   
     }    
     return null;
}

6、@requestbody接收参数

  • @requestbody可以接收GET或POST请求中的参数
  • 把json作为参数传递,要用【RequestBody】
  • 附带着说一下使用postman方式设置content-type为application/json方式测试后台接口
代码语言:javascript
复制
@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;
}
代码语言:javascript
复制
@PostMapping("/user")
public String user(@RequestBody User user){
    log.info(user.toString());    
    return null;
}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataScience 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、get方式Url传参:
  • 2、get方式Url传参:
  • 3、get方式Url传参:
  • 4、POST方式传递数据
  • 5、POST传递字符串文本
  • 6、@requestbody接收参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档