开发电信计费系统时碰到注册功能,由于是使用 MVC + ajax + html 方式实现,所以jsp的标签 就不可以用了。对于多个参数传递 实在让人蛋碎 , 原本以为 和表单传值一样简单,结果是自己太天真了。 不过还好,总算是学会了。
1 、前台js代码
var DTO = {"name":"Tom","age":25};
$.ajax({
type:"post",
contentType:"application/json;charset=utf-8",
data:JSON.stringify(DTO),
dataType:"json",
success:function(){...}
})
需要注意的是:1)必须设置 contentType : "application/json;charset=utf-8"
因为普通请求默认是 text/html!
不设置会导致页面返回 415 错误代码
2)传输的JSON对象需要序列化
2、后台controller代码
@Controller
@RequestMapping(value="XXX")
public class Exa{
@RequestMapping(value="XXX",method=RequestMethod.POST)
public void reg(@RequestBody Person person){
System.out.println(person.toString());
}
}
需要导入相应的jar包
注意加入标记 @RequestBody
此标记功能与 @ResponseBody功能刚好相反, 是将请求传入的JSON对象 转成 对应的 自定义对象。