@RequestParam、@ReqeustBody、@ReponseBody认识
简介:
@RequestParam和@RequestBody均是处理request body部分的注解,都用于获取请求部分的参数。
@ResponseBody是用于响应部分的注解
1. @RequestParam注解
- 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
- 用来处理Content-Type: 为
application/x-www-form-urlencoded编码(默认编码类型)的内容,提交方式可为GET、POST; - 该注解有两个属性: 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());
}
参考文档
- https://blog.csdn.net/kobejayandy/article/details/12690555
- https://blog.csdn.net/wangxy799/article/details/50952969
- https://blog.csdn.net/fengcai0123/article/details/73896391
- https://yq.aliyun.com/articles/154208
- https://www.cnblogs.com/guoyinli/p/7056146.html
@RequestParam、@ReqeustBody、@ReponseBody认识的更多相关文章
- 使用Restful风格中的post使用过遇到前端数据传送不到后端
问题描述:使用postman进行请求时候,前端的数据,一直在后端接收不到,找了好多资料,竟然是因为一个注解的原因. 后端接收设置:@RequestParam@ReqeustBody设置的原因 因为sp ...
- springMVC中@RequestParam和@RequestBody的作用
@RequestParam和@RequestBody是什么区别,估计很多人还是不太清楚, 因为一般用@ RequestParam就足够传入参数了,要说他们区别,就需要知道contentType是什么? ...
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
(转自:http://blog.csdn.net/walkerjong/article/details/7946109#) 引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后, ...
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
文章主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request ...
- 《转载》Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
- 注解 @RequestParam,@RequestHeader,@CookieValue,Pojo,servlet原生API
1.@RequestParam 我们的超链接:<a href="springMvc/testRequestParam">testRequestParam</a&g ...
- SpringMVC注解@RequestParam全面解析---打酱油的日子
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...
- spring mvc@RequestParam根据参数名获取传入参数值
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...
- Spring @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
背景 昨天一个人瞎倒腾spring boot,然后遇到了一点问题,所以把这个问题总结一下. 主要讲解request 数据到handler method 参数数据的绑定,所用到的注解和什么情形下使用. ...
随机推荐
- 在Linux系统上安装Oracle数据库
前期准备:我用的是虚拟机上的CentOS 64位系统.所以需要设置网卡,时间,EPEL源,安装一些必备的软件. 1.1在虚拟机上安装好Linux系统后选择虚拟机设置—>网络适配器—>网络连 ...
- iOS常用算法
1.冒泡排序 冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素,如果一个元素比另一个元素大/小,那么就交换这两个元素的位置.重复一直比较到最后一个元素. 1.最差时间复杂度:O( ...
- 工具类:mybatis中使用Threadlocal开启session及关闭session
1.线程容器,给线程绑定一个Object 内容,后只要线程不变,可以随时取出. 1.1 改变线程,无法取出内容. final ThreadLocal threadLocal = new ThreadL ...
- PHP 解决ueditor兼容问题
默认情况下,ueditor的内容通过PHP导入到DB中,会将内容中的html进行转义操作,此时读取显示就会有问题 step 1: $content = htmlspecialchars_decode( ...
- element UI 下拉菜单滚动监听(vue指令)
直接看代码吧,可以直接粘贴此代码到你的编辑器中看效果. <template> <div class="page-component"> <div cl ...
- 已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步代码时,还是提示输入密码?
GitHub虽好,但毕竟在国内访问不是很稳定,速度也不快,而且推送到上面的源码等资料必须公开,除非你给他交了保护费:所以有条件的话,建议大家搭建自己的Git Server.本地和局域网服务器都好,不信 ...
- StringBuilder
在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空 ...
- sys os
python常用的一些东西——sys.os等(转) 2012-09-19 14:51:4 1.常用内置函数:(不用import就可以直接使用) help(obj) 在线帮助, obj可是任 ...
- org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open con
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session f ...
- loadrunner---Android、iOS压力测试
链接来源:http://www.cnblogs.com/ydnice/p/5790848.html 一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试 ...