SpringMVC之ajax传递jason数据详解以及@RequestBody和@ResonseBody注解

Posted wyhhh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC之ajax传递jason数据详解以及@RequestBody和@ResonseBody注解相关的知识,希望对你有一定的参考价值。

     最近在做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 />

如图:

技术图片

可以在外部库中看到:

技术图片

 关于Jackson的详细用法大家可以参考这篇文章https://www.cnblogs.com/naaoveGIS/p/3893651.html

.@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层的方法啦~是不是觉得灰常强大灰常好用啊,嘻嘻小伙伴要是觉得有帮助的话欢迎顶一下哈~

 

以上是关于SpringMVC之ajax传递jason数据详解以及@RequestBody和@ResonseBody注解的主要内容,如果未能解决你的问题,请参考以下文章

asp.net页面如何接收AJAX传递过来的数组(普通数组和jason数组,两个麻烦都给举个例子)

ajax接收springMVC传递的json数据

jQuery实现ajax提交form表单(可以是提交json),用springmvc接收。图文详解

springMVC通过ajax传递参数list对象或传递数组对象到后台

ajax传递参数给springmvc总结[转]

[SSM]详解 SpringMVC 种常用的视图RESTful 风格编程实现报文信息转换器的应用与 AJAX 和 JSON 的处理