常用注解之@ResponseBody与@RequestBody与@RestController

@ResponseBody:

@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

@RequestBody:

 通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
    例如说以下情况:
    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });

    @requestMapping("/login")
    public void login(@requestBody String userName,@requestBody String pwd){
      System.out.println(userName+" :"+pwd);
    }
    这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
      String userName;
      String pwd;
    那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
    需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

            @requestBody注解常用来处理通常用于处理json格式的内容,将json对应的值转换为需要的类对象或者其他,前台ajax提交请求时应当为json格式,比如:

通过 contentType: "application/json; charset=utf-8" 定义请求内容的格式
data: JSON.stringify(tableArrayJsonData1) 把需要传的参数转为json格式

后台接收:

这样写好之后,@RequestBody会自动来解析JSON传,对应到@RequestBody的实体类里面去。

@RestController:

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

参考文章:

https://www.cnblogs.com/qiankun-site/p/5774300.html

猜你喜欢

转载自blog.csdn.net/weixin_38972910/article/details/84957532