简介:

@RequestParam和@RequestBody均是处理request body部分的注解,都用于获取请求部分的参数。

@ResponseBody是用于响应部分的注解

1. @RequestParam注解

  1. 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
  2. 用来处理Content-Type: 为 application/x-www-form-urlencoded编码(默认编码类型)的内容,提交方式可为GET、POST
  3. 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

2. @RequestBody注解

@RequestBody这个一般处理的是content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json、application/xml等。一般情况下来说常用其来处理application/json类型,它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的,因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用,例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式,详情查看FormHttpMessageConverter api。

通过@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中的属性名,否则是请求不过去的。

3. @ResponseBody注解

@responseBody注解的作用是将controller的方法返回的对象通过适当的HttpMessageConverter转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据

@RequestMapping(“/login”)
  @ResponseBody
  public User login(User user){
    return user;
  }
  User字段:userName pwd
  那么在前台接收到的数据为:’{“userName”:”xxx”,”pwd”:”xxx”}’   效果等同于如下代码:
  @RequestMapping(“/login”)
  public void login(User user, HttpServletResponse response){
   response.getWriter.write(JSONObject.fromObject(user).toString());
  }

参考文档

  1. https://blog.csdn.net/kobejayandy/article/details/12690555
  2. https://blog.csdn.net/wangxy799/article/details/50952969
  3. https://blog.csdn.net/fengcai0123/article/details/73896391
  4. https://yq.aliyun.com/articles/154208
  5. https://www.cnblogs.com/guoyinli/p/7056146.html

    

 

@RequestParam、@ReqeustBody、@ReponseBody认识的更多相关文章

  1. 使用Restful风格中的post使用过遇到前端数据传送不到后端

    问题描述:使用postman进行请求时候,前端的数据,一直在后端接收不到,找了好多资料,竟然是因为一个注解的原因. 后端接收设置:@RequestParam@ReqeustBody设置的原因 因为sp ...

  2. springMVC中@RequestParam和@RequestBody的作用

    @RequestParam和@RequestBody是什么区别,估计很多人还是不太清楚, 因为一般用@ RequestParam就足够传入参数了,要说他们区别,就需要知道contentType是什么? ...

  3. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解

    (转自:http://blog.csdn.net/walkerjong/article/details/7946109#) 引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后, ...

  4. @RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    文章主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request ...

  5. 《转载》Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解

    引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...

  6. 注解 @RequestParam,@RequestHeader,@CookieValue,Pojo,servlet原生API

    1.@RequestParam 我们的超链接:<a href="springMvc/testRequestParam">testRequestParam</a&g ...

  7. SpringMVC注解@RequestParam全面解析---打酱油的日子

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...

  8. spring mvc@RequestParam根据参数名获取传入参数值

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...

  9. Spring @RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    背景 昨天一个人瞎倒腾spring boot,然后遇到了一点问题,所以把这个问题总结一下. 主要讲解request 数据到handler method 参数数据的绑定,所用到的注解和什么情形下使用. ...

随机推荐

  1. 如何将新建的项目完整的提交到gitlab上?

    描述: 使用idea开发工具新建了一个项目工程,此时此刻工程没有任何的版本控制,代码存放在本地磁盘中,如果需要直接将项目工程代码提交到gitlab上,该如何操作呢? 因为当前没有版本控制,不能像正常的 ...

  2. c++单链表冒泡排序(交换结点),链表增删改查,运算符重载

    #include <iostream> #include <stdlib.h> #include <time.h> #include <fstream> ...

  3. Supervisor使用(启动nginx/tomcat/redis)

    官方文档:http://supervisord.org/   一.安装 yum install -y supervisor   二.开机自启动 执行以下命令: systemctl enable sup ...

  4. Ricker wavelet 简介

    本文依照参考文献简介 Ricker wavelet . 参考: [1] Frequency of the Ricker wavelet DOI: 10.1190/GEO2014-0441.1 [2] ...

  5. Python_随机序列生成_白噪声

    本文介绍如何利用Python自行生成随机序列,实现了 Whichmann / Hill 生成器. 参考: [1]Random Number Generation and Monte Carlo Met ...

  6. Tomcat 加腾讯云 实现二级域名访问

    搬家这个时间段不能用,从原网站https://blog.csdn.net/qq_36570464/article/details/86157394 截图过来的.也是自己写的. Tomcat 加腾讯云实 ...

  7. Vue-devtools安装步骤

    今天跟着网上参考的vue调试工具安装的方法,总结出更完善的步骤: 步骤一:调往链接地址 https://github.com/vuejs/vue-devtools 步骤二:解压链接地址中的包,到本地桌 ...

  8. 停止node进程和查看react-native-cli

    taskkill /f /t /im node.exe which react-native

  9. redux源码图解:createStore 和 applyMiddleware

    在研究 redux-saga时,发现自己对 redux middleware 不是太了解,因此,便决定先深入解读一下 redux 源码.跟大多数人一样,发现 redux源码 真的很精简,目录结构如下: ...

  10. CF867E: Buy Low Sell High(贪心, STL) (hdu6438)

    Description 有nn个城市,第ii个城市商品价格为aiai​,从11城市出发依次经过这nn个城市到达n n城市,在每个城市可以把手头商品出售也可以至多买一个商品,问最大收益. Input 第 ...