# 接收 / 发送 Json
- 接收 - @RequestBody
- 发送 - @ResponseBody
<mark>注意</mark>
不能接收:请求头 multipart/form-data
# 接收(字符串形式发送的)参数
- @RequestParam
<mark>注意</mark>
虽然说是字符串发送
但是 SpringMVC 进行了优化
接收时候 可以使用 :- 字符串接收 String
- 基本(封装)类型接收,如:Integer、int(不推荐)、Boolean、Double…
- 自定义类型(或官方提供的api类),如:Date、User(自定义)
<mark>字符串参数会被封装进类属性内部(默认按一定名字规则封装)</mark>
# @ModelAttribute
从名字可以看出,@ModelAttribute 本质上是对 request 中 Attribute 的处理
javax 中的 ServletRequest 中的 setAttribute 很熟悉吧
@ModelAttribute 求实就是搞这个 。
专门传递 键值 形式信息
甚至能 处理 Session 和 返回 让 前端页面 接收
ModelAttribute - 详细参考:https://www.cnblogs.com/thiaoqueen/p/7400353.html
归档(有待整理)
首先明确几个概念:
- request header Content-Type是前端妹妹规定的请求头的响应类型,常用的类型有
application/x-www-form-urlencoded : 表单默认的提交数据的格式。
multipart/form-data : 当你需要在表单中进行文件上传时,就需要使用该格式;
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载) - RequestMethod 是提交方式 常用的有 get post put 等
总结
在GET请求中,不能使用@RequestBody。
在POST请求,可以使用@RequestBody和@RequestParam
当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的Content-Type指定。分为以下几种情况:
- application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。
- multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)
- application/json、application/xml等格式的数据,必须使用@RequestBody来处理。
https://www.jianshu.com/p/1484605c523a
https://blog.csdn.net/qq_39584294/article/details/81232891
https://www.cnblogs.com/thiaoqueen/p/7400353.html
https://blog.csdn.net/u014644574/article/details/99567281
https://blog.csdn.net/menglinjie/article/details/81126403
https://www.cnblogs.com/zeroingToOne/p/8992746.html