【Java Web开发学习】Spring MVC 使用HTTP信息转换器
转载:https://www.cnblogs.com/yangchongxing/p/10186429.html
@ResponseBody和@RequestBody是启用消息转换的一种简洁和强大方式
消息转换(message conversion)提供了一种更为直接的方式,它能够将控制器产生的数据转换为服务于客户端的表述形式。
择MappingJacksonHttpMessageConverter或MappingJackson2HttpMessageConverter
produces仅处理客户端Accept头部信息表明它接口application/json类型结果的请求,并且Jackson JSON在类路径下。消息转换器会将控制器返回的结果转换为JSON文档。
consumes仅处理客户端ContentType头部信息是application/json的请求,并且Jackson JSON在类路径下。消息转换器会将请求的JSON文档转换为控制器对象。
@RestController Spring将会为处理器的所有方法消息转换功能。
@RequestBody查找一个消息转换器,将来自客户端的资源表述转换为对象。
@RestController public class IndexController { @RequestMapping(value="/person", consumes="application/json", produces="application/json") @ResponseBody public Map<String, String> person(@RequestBody Person person) throws IOException { System.out.println(person); Map<String, String> data = new HashMap<String, String>(); data.put("status", "ok"); return data; } }
bean
public class Person { private String name; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
测试html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="node_modules/vue/dist/vue.js"></script> <script src="node_modules/vue-resource/dist/vue-resource.js"></script> <title>Document</title> </head> <body> <div id="app"> <button type="button" value="click" @click="get()">click</button> </div> <script> Vue.http.options.emulateJSON = true; new Vue({ el:"#app", methods:{ get:function(){ var person = {name:'tom',sex:'boy'}; this.$http.post( 'http://localhost:8080/mvc/person', person, { emulateJSON:false}) .then(function(res){ alert(res.data); },function(res){ console.log(res); }); } } }) </script> </body> </html>