spring MVC 小问题

来源:互联网 发布:源码天下 编辑:程序博客网 时间:2024/05/17 22:10

spring MVC 中json格式数据发送与接收

在web程序开发中,前端和服务器数据的传输方式常用的有两种,一种是以表单的形式提交,此时可以利用jquery的serialize()方法将表单内容转为a=1&b=2&c=3&d=4&e=5这样的格式传输过去,接收端则可以用javabean直接接收。

还有一种方式是以json格式传输,接收时若直接用bean接收则接收不到,此时应该用@RequestBody方式,需要注意的是接收的需要是json串,而不是json对象,可以在发送前使用JSON.stringify函数进行处理。
例子如下

客户端:

var url=path+'testConverter.html';    $.ajax( {    url : url,    type : "POST",    dataType:"json",    contentType:'application/json;charset=UTF-8',   data:JSON.stringify({userId:'1',userName:'hello',password:'test',credits:'2',lastIp:'',lastVisit:'1986-05-27'}),    success : function(data) {        alert(data.userName);    },error:function(e){    alert("err");    }

服务端:

@RequestMapping(value="/testConverter.html")    @ResponseBody    public User testConverter(@RequestBody User  user)    {        System.out.println(user.getUserName());        user.setUserName("testname");        return user;    }

上面例子中服务端返回的是个对象,@ResponseBody函数会自动将其转换为客户端要求的‘ dataType:”json”,’格式。

最后需要注意的是
1,在xxx-serverlet配置文件中应该写上,以便可以使用 @ResponseBody和@RequestBody
2,发送时要写上 contentType:’application/json’
3,数组内容要用[]而不是list,用list会接收到一个map对象,而不是bean

项目springMvc 参数绑定 先后顺序问题

fastJson

json数据上传至服务器后先经过fastjson解析

InitBinder

直接表单数据上传 用@Request接收的时候 用@InitBinder 进行参数绑定

InitBinder

InitBinder可以进行指定参数 数据格式绑定
如两种日期格式:
yyyy-MM-dd hh:mm:ss 和 yyyy/mm/dd
分别对应两个参数,date1 和 date2
可以分别用

@InitBinder(value=”date1”)

@InitBinder(value=”date2”)
value为一个list 即可以接受数组形式的变量

0 0