SpringBoot 出现 Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported

SpringBoot 出现 Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported问题点1:如果Content-Type设置为“application/x-www-form-urlencoded;charset=UTF-8”无论是POST请求还是GET请求都是可以通过这种方式成功获取参数,但是如果前端POST请求中的body是Json对象的话,会报上述错误。请求中传JSON时设置的Content-Type如果是application/json或者text/json时,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

问题点1:

如果Content-Type设置为“application/x-www-form-urlencoded;charset=UTF-8”无论是POST请求还是GET请求都是可以通过这种方式成功获取参数,但是如果前端POST请求中的body是Json对象的话,会报上述错误。

请求中传JSON时设置的Content-Type 如果是application/json或者text/json时,JAVA中request.getParameter(“”)怎么也接收不到数据。这是因为,Tomcat的HttpServletRequest类的实现类为org.apache.catalina.connector.Request(实际上是org.apache.coyote.Request)。

问题点2:

当前端请求的Content-Type是Json时,可以用@RequestBody这个注解来解决。@RequestParam 底层是通过request.getParameter方式获得参数的,换句话说,@RequestParam 和request.getParameter是同一回事。因为使用request.getParameter()方式获取参数,可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。所以,@RequestParam可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST。

@RequestBody接受的是一个json对象的字符串,而不是Json对象,在请求时往往都是Json对象,用JSON.stringify(data)的方式就能将对象变成json字符串。

总结:

前端请求传Json对象则后端使用@RequestParam;

前端请求传Json对象的字符串则后端使用@RequestBody。

本文大部分内容来自:使用SpringBoot做Javaweb时,数据交互遇到的问题

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157768.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JVM – 彻底理解打破双亲委派机制

    文章目录Pre双亲委派何为打破双亲委派演示Pre双亲委派JVM-白话聊一聊JVM类加载和双亲委派机制源码解析JVM-自定义类加载器何为打破双亲委派举个例子有个类Artisan我们希望通过自定义加载器直接从某个路径下读取Artisan.class.而不是说通过自定义加载器委托给AppClassLoader——>ExtClassLoader—->BootClassLoader这么走一遍,都没有的话,才让自定义加载器去加载Artis

    2022年4月8日
    73
  • 私网ip和公网ip_详解

    私网ip和公网ip_详解备注:此博客为转载,原作者地址请点击此处 版权声明:本文为小小呆原创文章,转载请注明出处! https://blog.csdn.net/gui951753/article/details/79210535  IP可以分为PublicIP和Privat…

    2022年6月11日
    39
  • SpringCloud之Eureka使用篇

    1.单例EurekaServer1.1环境准备1.首先我这里有spring-cloud-parentpom工程2.spring-cloud-eureka-serverEurekaServer子工程这里端口我们使用90开头3.spring-cloud-order-service-consumer订单调用服务(也就是咱们的服务消费者)这里端口我们使用80开头4.spring-cloud-order-service-provider订单提供服务(服务提供者)这里端口我们使

    2022年4月6日
    56
  • ncnn笔记_cnn代码

    ncnn笔记_cnn代码最近看了ncnn的源码,代码风格清爽,遂想先抛开VULKAN记录一下它的推理流程。1. 先看个yolov2democsdn上的帖子https://blog.csdn.net/sina

    2022年8月6日
    7
  • 内部类(成员内部类、静态内部类、方法内部类)

    内部类(成员内部类、静态内部类、方法内部类)一:成员内部类:最常见的内部类就是成员内部类,也称作普通内部类;1、Inner类定义在Outer类的内部,相当于Outer类的成员变量的位置,Inner类可以使用任意访问修饰符,如:public、private、protected等。2、Inner类中定义的test()方法可以访问Outer类中的数据,不受访问控制符的影响。3、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去……

    2022年10月11日
    1
  • Activiti工作流_activiti使用教程

    Activiti工作流_activiti使用教程Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。 <!–添加Activiti工作流的支持一般需要exclusions–> <dependency> <groupId…

    2022年10月5日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号