栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring MVC-为什么不能同时使用@RequestBody和@RequestParam

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring MVC-为什么不能同时使用@RequestBody和@RequestParam

@RequestBody
javadoc的状态

指示方法参数的注释应绑定到Web请求的正文。

它使用的注册实例

HttpMessageConverter
将请求主体反序列化为带注释的参数类型的对象。

@RequestParamjavadoc
的状态

指示方法参数应绑定到Web请求参数的注释。

  1. Spring将请求的主体绑定到以注释的参数

    @RequestBody

  2. Spring将来自请求主体的请求参数(URL编码的参数)绑定到你的方法参数。Spring将使用参数的名称,即。name,以映射参数。

  3. 参数按顺序解析。首先

    @RequestBody
    处理。spring会消耗掉所有的
    HttpServletRequest InputStream
    。然后,当它尝试解析
    @RequestParam
    默认情况下的时
    required
    ,查询字符串中没有请求参数,也没有请求正文的剩余内容,即。没有。因此失败400,因为处理程序方法无法正确处理请求。

  4. 处理程序@RequestParam首先执行操作,读取可以

    HttpServletRequest InputStream
    映射请求参数的内容,即。整个查询字符串/网址编码的参数。这样做并获取abc映射到参数的值name。
    @RequestBody
    运行处理程序时,请求主体中没有任何内容,因此使用的参数为空字符串。

  5. 处理程序@RequestBody读取主体并将其绑定到参数。然后,的处理程序

    @RequestParam
    可以从URL查询字符串获取请求参数。

  6. 用于

    @RequestParam
    从正文和URL查询字符串读取的处理程序。通常会将它们放在中
    Map
    ,但是由于参数类型为
    String
    ,Spring会将序列号
    Map
    分隔为逗号分隔的值。
    @RequestBody
    然后,处理程序再也没有从身体读取的内容了。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号