欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-01 20:52:09
...

 

处理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  MultiValueMap<String,String>map

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

相关标签: controller