Springboot中Controller层接收参数几种方式

 

处理request uri部分 @PathVariable
处理request header部分的注解  @RequestHeader  @CookieValue
处理request body部分的注解   @RequestParam  @RequestBody
处理 attribute 类型是注解  @SessionAttributes  @ModelAttribute
 


第一类:请求路径参数

1、 @PathVariable
获取路径参数。 url/{id}这种形式
2、@RequestParam
获取查询参数。即为url?name=lofge
例子:

    @GetMapping("/demo/{id}")
    @ResponseBody//返回基本数据类型
    public String demo(@PathVariable(name = "id") String id,
                     @RequestParam(name = "name1") String name2){
        System.out.println("id:"+id);
        System.out.println("name:"+name2);
        return "123";
    }


第二类:Body参数

@RequestBody注解通常是来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,
比如application/json或者application、xml等,一般用来处理application/json类型
通过@requestBody可以将请求体中JSON字符串绑定到相应的bean上,当然也可以绑定到对应的字符串上

//前端请求:
$.ajax({
    url:'/login',
    typr:"POST",
    data:{"userName":"admin","pwd":"admin"}
    content-type:"application/json charset=utf-8",
    success:function(data){
        alert("request Success!");
    }
})
//后端接收:
@PostMapping("/login")
public void login(@RequestBody String userName,@RequestBody String pwd){
        system.out.println(userName+""+pwd);
//如果有一个Person类,它有String userName,String pwd  则可以写成Person person
}

@requestBody可以用来处理content-type类型为application、x-www-form-urlcoded的内容,只不过不是很常用

@RequestBody  MultiValueMapmap

2.无注解

@PostMapping(path=“demo2”)
public void demo2(Person person){
    System.out.println(person.toString())
}

第三类
1、@RequestHeader
2、@CookieValue
例如:

   @GetMapping("/demo3")
    public void demo3(@RequestHeader(name = "myHeader") String myHeader,
                      @CookieValue(name = "myCookie") String myCookie){
        System.out.println("myHeader="+myHeader);
        System.out.println("myCookie:"+myCookie);
    }

也可以这样

  @GetMapping("/demo3")
    public void demo3(HttpServletRequest request){
        System.out.println(request.getHeader("myHeader"));
        for (Cookie cookie:request.getCookies()){
            System.out.println(cookie.getValue());
        }

转载自:https://blog.csdn.net/suki_rong/article/details/80445880

你可能感兴趣的:(Springboot中Controller层接收参数几种方式)