SPRINGMVC注解之@RESPONSEBODY和@REQUESTBODY详解
来源:互联网 发布:淘宝发票规则 编辑:程序博客网 时间:2024/06/06 00:29
简介
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")@ResponseBodypublic 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": "韦德"}
总结
在网上看到很不错的流程图,作为总结吧
阅读全文
0 0
- springMvc注解之@ResponseBody和@RequestBody详解
- SPRINGMVC注解之@RESPONSEBODY和@REQUESTBODY详解
- SpringMVC中@RequestBody和@ResponseBody注解详解
- springmvc注解RequestBody和ResponseBody
- @RequestBody 和@ResponseBody 注解详解
- @RequestBody 和@ResponseBody 注解详解
- @RequestBody 和@ResponseBody 注解详解
- SpringMVC初体验之注解RequestBody & ResponseBody
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- @RequestBody, @ResponseBody 注解详解
- poj 2007 Scrambled Polygon(凸包Graham扫描线模板)
- poj2031 Building a Space Station
- 题目491:幸运三角形
- 你是怎样搭建.net架构
- oracle函数——通用函数
- SPRINGMVC注解之@RESPONSEBODY和@REQUESTBODY详解
- Java中方法的重载
- Java学习笔记 11 instanceof 、equal 和 == 的联系和区别
- Servlet学习笔记—Servlet接口和HttpServlet类
- 等考上机高分技巧:计算机等考上机六大注意事项
- leetcode First Bad Version 第一个坏版本
- c语言中的问题与解决
- java读取图片成rgb二维数组
- 1015. Reversible Primes (20)