@responsebody@requestbody实例

register.jsp:

    $("#sub").click(function(){
        var m = {
                "account": $("#_account").val(),
                "passwords": $("#_pass").val(),
                "realname": $("#real_name").val(),
                "phonenumber": $("#phone_number").val(),
                "sex": $("input:checked").val(),
                "mailname": $("#mail_name").val()
            };
        $.ajax({
            type:"POST",
            async : false,
            url:"/demo/user/receive",
            dataType:"json",
            contentType:"application/json; charset=utf-8",
            data:JSON.stringify(m),
            success:function(data){
                alert("return map success!");
                newpage();
            },
            error:function(data){
                alert("保存失败 ")
            }
        })

Controller:

    @RequestMapping(value="receive", method=RequestMethod.POST, consumes="application/json")
    public @ResponseBody Map<String, String> receiveData(@RequestBody RegInfo info){
        
        Map<String, String> reg_check = regInfoService.checkRegInfo(info);
        for(Map.Entry<String, String> entry:reg_check.entrySet()){    
             System.out.println(entry.getKey()+"--->"+entry.getValue());    
        }
        
        System.out.println(info);
        System.out.println(info.getRealname());
        return reg_check;
    }

1.如上代码中data需要为String形式的数据,由于此处m是json对象,因此需要使用JSON.stringify()转换为字符串形式的数据即“m”;

2.@requestbody用于接收前台传来的数据,接收到的数据为字符串的形式,但是此注解可以将字符串中的变量值注入到对象info中,要求info实体中的属性名字和m中属性一致;

3.@responsebody用于将后台的数据直接放在responsebody中返回,此处@responsebody注解会将map的实例转换为json对象,故在前端data接收到的是json对象;

4.consumes表示只处理格式为content-type:application/json的请求;相对的produces="application/json"表示仅处理请求中包含accept:application/json(即返回类型为application/json格式)的request;

注:ajax中

data:String

  默认情况下自动转换为String类型;可用processdata属性禁止自动转换;

processData:Boolean

  默认情况下为true;为false表示禁止自动转换data中数据为请求字符串;

本人还是有点疑问:既然data默认会自动转换为字符串,为什么还要JSON.stringify()转换;(测试不使用的话传递失败)

posted @ 2015-03-26 13:07  有事没事常回家看看  阅读(5001)  评论(1编辑  收藏  举报