探讨SpringMVC的前后端数据交换
SpringMVC 前后端数据交互
这里只讨论最常用的contentType 即是form-data和application/json
第一种情况 提交单个参数
form-data方式
前端代码:这里为了方便用的jquery的ajax的post
上图的data属性 看上去是json 其实因为你的content-type是form-data 你提交的数据 不是json 而是跟你get提交参数的时候 url后面拼参数 和/test/test?name=cqy一样的 只是get的url长度不同的浏览器有限制而已 如下图所示
后端代码:
提交单个参数 和提交对象 formData其实区别不大
第二种情况 提交对象
如图 前端代码:
这里更能看到 和get的url后面拼接参数是一样的
第三种情况 提交数组
本质和get提交是一样的
只是一定要将ids[0]=1&ids[1]=2这种转义 不然会报badRequest 400 因为[]是特殊字符
提交数组到后台的时候 后台一定要加@RequestParm(“ids[]”)这个注解 不然是什么都收不到的
但是这个有个诡异的情况 去掉@RequestParm的注解后 直接用url拼接的方式 后台还可以收到 但是用post的方式 却收到是null
formData常见的方式 大概如上
application/json方式
application/json就是json这种数据格式了 这种基本上是现在用的最多 也是最灵活的方式
第一种 json对象
前台代码如下:
这种情况前端代码需要注意的有两点
第一是必须显示的指定请求头的contentType为application/json 因为默认的请求头为form-data
第二是必须把json对象通过stringify方法转成json字符串
后端代码:
后端代码必须用注解@RequestBody来强制指定前端的请求头必须是application/json
第二种情况 提交数组
后端代码:
不用用@RequestParam去指定那么麻烦了
第三种情况 提交List
前端代码:
后端代码:
最后来整个复杂的的JSON 再在url里面拼接一个参数
前端代码:
后端代码:
后端直接用map来接收复杂的json 然后用@RequestParm来接收url后面的参数
基本上掌握了以上几种交互方式 springMVC的前后端传值就掌握了