springMvc注解之@ResponseBody和@RequestBody
简介
springmvc对json的前后台传输做了很好封装,避免了重复编码的过程,下面来看看常用的@ResponseBody和@RequestBody注解
添加依赖
springmvc对json的处理依赖jackson
<dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.11</version> </dependency> <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.11</version> </dependency>
xml配置
<mvc:annotation-driven />//不要忘了命名空间配置
@ResponseBody
如果传输的是单层json对象,我们后台可以直接用 @RequestParam接收
$.ajax({type : "post",dataType : "json",url : "/testRequestBody",data:{name:"韦德",age:35},success : function(result) {} });
@RequestMapping("/testRequestBody") public String testRequestBody(@RequestParam Map<String, Object> map) {System.out.println(map);// {name=韦德, age=35}return "index"; }
如果传输的是多层嵌套json对象,这个时候会就会出现数据丢失问题
@ResponseBody很好的解决了这个问题,它会把前台传输过来的json转化为后台对应的对象
$.ajax({type : "post",dataType : "json",url : "/testRequestBody",contentType:"application/json", data:JSON.stringify({name:"韦德",win:[2006,2012,2013],age:35}),success : function(result) {} });
@RequestMapping("/testRequestBody") public String testRequestBody(@RequestBody Map<String, Object> map) {System.out.println(map);//{name=韦德, win=[2006, 2012, 2013], age=35}return "index"; }
需要注意的是前台需要指定contentType为"application/json"
同时要把json对象转化为String,否则后台不能识别
@ResponseBody
ajax请求返回json格式,往常我们可以这样做
private void writeJson(HttpServletResponse response, Object object) {String json = JSON.toJSONString(object);response.setCharacterEncoding("UTF-8");response.setContentType("application/json; charset=utf-8");PrintWriter out = null;try {out = response.getWriter();out.write(json);} catch (IOException e) {e.printStackTrace();} finally {if (out != null) {out.close();}} }
这个时候 @ResponseBody就派上用场了,只需要一个注解,全部搞定
$.ajax({type : "post",dataType : "json",url : "/testResponseBody",success : function(result) {console.info(result);} });
@RequestMapping("/testResponseBody") @ResponseBody public Map<String, Object> testRequestBody() {Map<String, Object> result = new HashMap<String, Object>();result.put("name", "韦德");result.put("age", 35);return result; }
前台console输出
{"age": 35,"name": "韦德" }
总结
在网上看到很不错的流程图,作为总结吧
转载于:https://www.cnblogs.com/zhaoyanhaoBlog/p/9357395.html
springMvc注解之@ResponseBody和@RequestBody相关推荐
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札( ...
- 详述@ResponseBody和@RequestBody注解的区别
2019独角兽企业重金招聘Python工程师标准>>> 1 前言 在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMappi ...
- SpringMVC中使用@ResponseBody注解标注业务方法
SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面 导包: 除了一些spring的包之外,还需要jackson-annotations.jar ...
- @ResponseBody,@RequestBody,@PathVariable
最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札 ...
- springmvc 注解总结
转载自 https://www.cnblogs.com/xiaoxi/p/5718894.html 1.@RequestMapping @RequestMapping RequestMapping是一 ...
- @responseBody和@RequestBody
@responseBody和@RequestBody @responseBody把后台pojo转换json对象,返回到页面. @RequestBody接受前台json数据,把json数据自动封装jav ...
- SpringMVC注解整理
2019独角兽企业重金招聘Python工程师标准>>> 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:compone ...
- 学习:springMVC注解
引言 在项目中,组长说我们的@Autowired注解都是黄的 后来,组长说加上@SuppressWarnings来抑制警告信息 @SuppressWarnings 注解目标 其注解目标为类.字段.函数 ...
- SpringMVC注解@initbinder解决类型转换问题
SpringMVC注解@initbinder解决类型转换问题 参考文章: (1)SpringMVC注解@initbinder解决类型转换问题 (2)https://www.cnblogs.com/an ...
最新文章
- python爬虫软件-一些Python爬虫工具
- iframe关于滚动条的去除和保留
- 移动游戏市场Testin云测占有率超过90%
- 使用vs2010+WCF发布json数据,ExtJS4.0进行调用
- 两场直播丨 手把手安装搭建GoldenDB、基于IB网络的Oracle Extend RAC最佳实践
- AJAX - 创建XMLHttpRequest 对象
- 在 Rust 代码中编写 Python 是种怎样的体验?
- 机器学习十大经典算法——逻辑回归
- Mac|技巧:Mac电脑如何使用ping命令呢?
- git配置ssh私钥_GitLab 配置
- Archlinux下firefox无法使用支付宝控件(aliedit)输入密码/进行支付的解决办法
- 什么是动态域名解析?---金万维
- 关于笔记本WLAN(无线)口共享给以太网口
- MySQL的三个锁级别(附图)
- android 6.1 app闪退,手机软件闪退怎么办 具体解决方法【图文】
- win10 无法删除 注册表 蓝牙_win10删除蓝牙设备后无法重新添加如何解决
- maven plugins飘红
- gred-cam 的tensorflow实现 热力图
- macOS 视频格式转换器 MacX Video Converter Pro
- 片选,怎么看时序图,电路原理图
热门文章
- 【 ➰斗艳争妍の网络协议姐妹花️➰】http协议 VS websocket协议
- spring security加载原理(基于springboot)
- es Root mapping definition has unsupported parameters解决方法
- C语言再学习 -- 输入/输出
- zcmu1710(dp)
- 【译】Why Decentralized AI Matters Part II: Technological Enablers
- Alibaba-Dexposed框架在线热补丁修复的使用
- 【问链财经-区块链基础知识系列】 第二十一课 区块链应用于大宗商品供应链金融
- android使用HttpURLConnection/HttpClient实现带参数文件上传
- JZOJ 5669. 【GDSOI2018模拟4.19】排列