# 接收 / 发送 Json

  • 接收 - @RequestBody
  • 发送 - @ResponseBody

<mark>注意</mark>
不能接收:请求头 multipart/form-data

# 接收(字符串形式发送的)参数

  • @RequestParam
    <mark>注意</mark>
    虽然说是字符串发送
    但是 SpringMVC 进行了优化
    接收时候 可以使用 :
    1. 字符串接收 String
    2. 基本(封装)类型接收,如:Integer、int(不推荐)、Boolean、Double…
    3. 自定义类型(或官方提供的api类),如:Date、User(自定义)
      <mark>字符串参数会被封装进类属性内部(默认按一定名字规则封装)</mark>

# @ModelAttribute

从名字可以看出,@ModelAttribute 本质上是对 request 中 Attribute 的处理

javax 中的 ServletRequest 中的 setAttribute 很熟悉吧

@ModelAttribute 求实就是搞这个 。
专门传递 键值 形式信息
甚至能 处理 Session 和 返回 让 前端页面 接收

ModelAttribute - 详细参考:https://www.cnblogs.com/thiaoqueen/p/7400353.html


归档(有待整理)

首先明确几个概念:

  1. 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 : 二进制流数据(如常见的文件下载)
  2. RequestMethod 是提交方式 常用的有 get post put 等

总结

在GET请求中,不能使用@RequestBody。

在POST请求,可以使用@RequestBody和@RequestParam

当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的Content-Type指定。分为以下几种情况:

  1. application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。
  2. multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)
  3. 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