可以说@RequestParam与@RequestBody只是一种说法
    前者不仅可以接收url后的数据,对于body下特定编码的数据,例如以键值对存在的数据也能够接收(即使它存储在body里),但是无法接收json的数据

    Get不能使用表单,只能在url中传参,传参方式只有这一种。
    Post可以使用表单,也可以在url中传参。
    使用表单时有几种数据类型(表现为数据的存储位置不同):
    1、 x-www-form-urlencoded 参数存储在query中 用@RequestParam接收。
    2、raw(josn,xml) 参数存储在body中 用@RequetBody接收。
    总结一下: 凡是放在body中的都可以用@RequestBody接收,文件类型的数据可以用@RequestPart接收。 凡是放在query中的都可以用@RequestParam接收,包括Get方式提交和Post(x-www-form-urlencoded)方式提交的。




    1、从content-type方面总结:
    ① form-data、x-www-form-urlencoded:不可以用@RequestBody;可以用@RequestParam。见postman的格局,这两种方式的时候没有json字符串部分。
    ② application/json:json字符串部分可以用@RequestBody;url中的?后面参数可以用@RequestParam。见postman的格局

    @RequestBody

    1. (@RequestBody Map map)
    2. (@RequestBody Object object)
    3. application/json时候可用
    4. form-datax-www-form-urlencoded时候不可用

    @RequestParam

    1. (@RequestParam Map map)
    2. application/json时候,json字符串部分不可用,url中的?后面添加参数即可用,见图一
    3. form-datax-www-form-urlencoded时候可用,但是要将Headers里的Content-Type删掉
    1. (@RequestParam String waterEleId,
    2. @RequestParam String enterpriseName)
    3. application/json时候,json字符串部分不可用,url中的?后面添加参数即可用,见图一
    4. form-datax-www-form-urlencoded时候可用,且参数可以没有顺序(即前端传过来的参数或者url中的参数顺序不必和后台接口中的参数顺序一致,只要字段名相同就可以),但是要将Headers里的Content-Type删掉
    1. (@RequestParam Object object)
    2. 不管application/jsonform-datax-www-form-urlencoded都不可用

    既不是@RequestBody也不是@RequestParam,没有指定参数哪种接收方式
    **

    1. (Map map)
    2. (Object object)
    3. application/json时候:json字符串部分不可用,url中的?后面添加参数不可用。
    4. 因为没有指定,它也不知道到底是用json字符串部分还是?后面添加参数部分,所以干脆都不可以用
    5. form-datax-www-form-urlencoded时都不可用,见图二
    6. (HttpServletRequest request)
    7. application/json不可用
    8. form-datax-www-form-urlencoded时可用

    上传图片时,form-data是以键值对进行传递的
    postbody的4种编码格式 - 图1