SpringMVC可以接收原生form表单和json格式数据
有一个名为Book的model,其中的属性如下:
字符串类型的name,数字类型的price,数组类型的cover,集合类型的authors,其中集合类型中的元素又是一个Author对象,那么前端需要发送什么样的数据才能完整的封装成一个Book对象呢
如果对SpringMVC的不太熟悉可以看看我的这篇博客
首先是form表单数据(编码方式为application/x-www-form-urlencoded)
先看看controller代码
@Controllerpublic class BookController { @PostMapping("/book/save") public ResponseEntity save(Book book){ System.out.println(book.toString()); return ResponseEntity.ok("receive"); }}
controller代码很简单,接受参数就是刚才的Book对象
用postman模拟表单发送数据,原生form表单只能发送key-value格式的数据
如上图所示,如果是数组,需要key值为数组的变量名,value为数组的单个值,其实如果是数组也可以写成 cover: one, two, three 这样的形式,springMVC可以解析成数组;如果是集合,首先在变量名后加上索引值,然后加上此元素的属性名,和后端的对象属性名一一对应好
form表单还可以上传图片 文档 视频等格式,一般使用ajax异步上传到图片服务器,然后返回图片在图片服务器上的url,并提交图片的url
Json格式数据提交
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON可由两种结构构建:键值对的集合(a collection of name/value pairs)和有序的值的集合(an ordered list of values)
用Json可以传递很复杂的数据,仍然以上面的Book对象为例,需要传递哪些形式的数据呢
先看看controller方法
@Controllerpublic class BookController { @PostMapping("/book/keep") public ResponseEntity keep(@RequestBody Book book) { System.out.println(book); return ResponseEntity.ok("done"); }}
参数为Book对象,加了@ReqeustBody就可以接受Json格式的数据
用postman发送json数据
如上图所示,json格式的数据可读性很好,后端也能完全接受到数据
以上就是两种数据接收的方式