最近在做ajax进行用户名校验时遇到了一些问题,在不断debug的过程中也加深了我对springMVC之ajax传递jason数据的理解,希望对有需要的小伙伴一些帮助~
工具:IDEA
我们通过code来理解一下:
1.如下图时js代码:因为是对用户名校验,所以传入的数据只有用户名;
PS:SpringMVC 通过ajax传参到后台时:因为@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json"。
2.controller中的实现:
大家可以发现我们传入的数据只有用户名为什么RequestBody得到的是一个POJO类的对象(当然这个Admin类不止这个属性啦)呢?那就需要我们对@RequestBody和@ResponseBody这两个注解和SpringMVC中ajax的具体操作有一个了解啦。
①.首先简单介绍下Jackson:Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象;要引入强大的Jackson需要我们在pom.xml中导入相关的依赖(需要配置XML<mvc:annotation-driven />)
如图:
可以在外部库中看到:
②.@RequestBody:简单的说就是 RequestBody用于获取请求体的结构,使用了Jackson框架和@RequestBody注解后所以可以实现把请求体的内容封装到Admin对象中,同时Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。
③.@ResponseBody:ResponseBody将返回的值直接写到Http的响应体中,不需要替换为Spring的Model或者解析为视图,相当于response.getWriter.write();当使用了Jackson框架和@ResponseBody注解之后,Jackson框架自动将对象解析成Json串返还数据给前端页面。
大家想详细了解@RequestBody和@ResponseBody的参考这篇文章:http://www.chinacion.cn/article/608.html
因此我们传入的Jason数据由于我们添加了Jackson依赖后会被转换为Java对象,同时Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,所以我们对POJO类的对象调用service层的方法啦~是不是觉得灰常强大灰常好用啊,嘻嘻小伙伴要是觉得有帮助的话欢迎顶一下哈~