springmvc @ResponseBody 返回json 遇到的坑

来源:互联网 发布:乐视mac照片 编辑:程序博客网 时间:2024/06/03 18:18

返回值为 json 同步调用俩例子 

1. 引用json 工具类才需要 

HttpHttpServletRequest request

HttpServletResponse response 


例子

@RequestMapping(value="/haha")

public string xxx { HttpHttpServletRequest request,HttpServletResponse response ,String userNameOrTel,  String password} 

{    JSONObject json =new JSONObject();


                            json.put("result"," success")

                      response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
PrintWriter out = null;
out = response.getWriter();
out.write(json.toString());

}



$.ajax({
data : {
userNameOrTel: $("#name").val(),
password: $("#pwd").val()
},
type : "post",
url : "haha",
dataType : "json",
contentType : "application/json;charset=utf-8", 
async : false,  //同步异步
success : function(data) {
debugger;



}


}
});




2 . 用了 @ResponseBody 处理返回值 msg 消息类

 @ResponseBody 

@RequestMapping(value="/haha")

public Msg xxx { @RequestParam String userNameOrTel, @RequestParam String password} 

{   Msg msg = new Msg();

      int num=0;

    if (num > 0) {
msg.setStatus(RESULT_STATUS.SUCCESS);
msg.setR("保存成功");
msg.setCode(100);
} else {
msg.setStatus(RESULT_STATUS.FAILURE);
msg.setR("保存异常!");
msg.setCode(101);
}

       return msg

}


$.ajax({
data : {
userNameOrTel: $("#name").val(),
password: $("#pwd").val()
},
type : "post",
url : "haha",
dataType : "json",
//contentType : "application/json;charset=utf-8", 不要加
async : false,   //同步异步
success : function(msg) {
debugger;



}


}
});


2.1  如果有需要 把 ajax 将参数 格式化 json 值 

示例 :

data:JSON.stringify({'channelId':channelId}),
                  success:function(data){
                        alert(data.channelId);
                  },

contentType:'application/json;charset=utf-8',


后台 @RequestMapping(value="/haha",produces="application/json;charset=UTF-8")

@ResponseBody
public String test2()
{  } 



3 . 封装好用的 msg 类

public class Msg extends SimpleMsg{


/**
* 返回的结果代码
* code-100 成功
* code-101 失败
* code-102 验证失败
*/
private int code;


/**
* 返回的消息
* r-可以携带任何返回的结果
*/
private String r;


/**
* 返回结果的状态
* status:
* NONE, 
SUCCESS, 
FAILURE
*/
private RESULT_STATUS status;


private Map<String, Object> extendInfo = new HashMap<String, Object>();


public enum RESULT_STATUS {
NONE, 
SUCCESS, 
FAILURE
}

public Msg add(String key,Object value)
{
this.getExtendInfo().put(key, value);
return this;
}



public int getCode() {
return code;
}


public void setCode(int code) {
this.code = code;
}


public String getR() {
return r;
}


public void setR(String r) {
this.r = r;
}


public RESULT_STATUS getStatus() {
return status;
}


public void setStatus(RESULT_STATUS status) {
this.status = status;
}


public Map<String, Object> getExtendInfo() {
return extendInfo;
}


public void setExtendInfo(Map<String, Object> extendInfo) {
this.extendInfo = extendInfo;
}


@Override
public String toString() {
return "Msg [code=" + code + ", r=" + r + ", status=" + status + ", extendInfo=" + extendInfo + "]";
}


原创粉丝点击