简介

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相关推荐

  1. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考:  Spring 注解学习手札( ...

  2. 详述@ResponseBody和@RequestBody注解的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1 前言 在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMappi ...

  3. SpringMVC中使用@ResponseBody注解标注业务方法

    SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面 导包: 除了一些spring的包之外,还需要jackson-annotations.jar ...

  4. @ResponseBody,@RequestBody,@PathVariable

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服!   相关参考: Spring 注解学习手札 ...

  5. springmvc 注解总结

    转载自 https://www.cnblogs.com/xiaoxi/p/5718894.html 1.@RequestMapping @RequestMapping RequestMapping是一 ...

  6. @responseBody和@RequestBody

    @responseBody和@RequestBody @responseBody把后台pojo转换json对象,返回到页面. @RequestBody接受前台json数据,把json数据自动封装jav ...

  7. SpringMVC注解整理

    2019独角兽企业重金招聘Python工程师标准>>> 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:compone ...

  8. 学习:springMVC注解

    引言 在项目中,组长说我们的@Autowired注解都是黄的 后来,组长说加上@SuppressWarnings来抑制警告信息 @SuppressWarnings 注解目标 其注解目标为类.字段.函数 ...

  9. SpringMVC注解@initbinder解决类型转换问题

    SpringMVC注解@initbinder解决类型转换问题 参考文章: (1)SpringMVC注解@initbinder解决类型转换问题 (2)https://www.cnblogs.com/an ...

最新文章

  1. python爬虫软件-一些Python爬虫工具
  2. iframe关于滚动条的去除和保留
  3. 移动游戏市场Testin云测占有率超过90%
  4. 使用vs2010+WCF发布json数据,ExtJS4.0进行调用
  5. 两场直播丨 手把手安装搭建GoldenDB、基于IB网络的Oracle Extend RAC最佳实践
  6. AJAX - 创建XMLHttpRequest 对象
  7. 在 Rust 代码中编写 Python 是种怎样的体验?
  8. 机器学习十大经典算法——逻辑回归
  9. Mac|技巧:Mac电脑如何使用ping命令呢?
  10. git配置ssh私钥_GitLab 配置
  11. Archlinux下firefox无法使用支付宝控件(aliedit)输入密码/进行支付的解决办法
  12. 什么是动态域名解析?---金万维
  13. 关于笔记本WLAN(无线)口共享给以太网口
  14. MySQL的三个锁级别(附图)
  15. android 6.1 app闪退,手机软件闪退怎么办 具体解决方法【图文】
  16. win10 无法删除 注册表 蓝牙_win10删除蓝牙设备后无法重新添加如何解决
  17. maven plugins飘红
  18. gred-cam 的tensorflow实现 热力图
  19. macOS 视频格式转换器 MacX Video Converter Pro
  20. 片选,怎么看时序图,电路原理图

热门文章

  1. 【 ➰斗艳争妍の网络协议姐妹花‍‍️➰】http协议 VS websocket协议
  2. spring security加载原理(基于springboot)
  3. es Root mapping definition has unsupported parameters解决方法
  4. C语言再学习 -- 输入/输出
  5. zcmu1710(dp)
  6. 【译】Why Decentralized AI Matters Part II: Technological Enablers
  7. Alibaba-Dexposed框架在线热补丁修复的使用
  8. 【问链财经-区块链基础知识系列】 第二十一课 区块链应用于大宗商品供应链金融
  9. android使用HttpURLConnection/HttpClient实现带参数文件上传
  10. JZOJ 5669. 【GDSOI2018模拟4.19】排列