【Java Web开发学习】Spring MVC 使用HTTP信息转换器

【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>
原文地址:https://www.cnblogs.com/yangchongxing/p/10186429.html