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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 正则表达式替换某个字符「建议收藏」

    正则表达式替换某个字符「建议收藏」需要匹配指定位置的某个字符示例:替换时间戳中的最后一个冒号为.号//原始字符串letstr="18:78:45:222"//匹配letreg=/^(.{5,8}):(.*)$/g//替换letresult=str.replace(reg,"$1*$2")希望有更好的方法,看官们留个言呗…

    2022年5月16日
    39
  • 几张系统图_一共有几个系统

    几张系统图_一共有几个系统几张系统图

    2022年4月21日
    78
  • PHP小程序开发_微信小程序后端语言

    PHP小程序开发_微信小程序后端语言想要快速地开发一个小程序,很多环节都需要注意,微信小程序php后端的开发估计很多人都还很陌生,但是这也是至关重要的,一起来看看开发实例详解吧。1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局、事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但是所有的数据都要以JSON的形式返回给小程序。2.昨天写了登录注册、忘记密码功能,…

    2022年9月17日
    2
  • 联想笔记本电脑键盘灯怎么开启_联想键盘灯怎么开

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。联想笔记本键盘灯的打开方法如下:1、正常情况下,在键盘上同时按下“FN”和“空格”键打开即可。2、部分早期的Thinkpad笔记本电脑需要通过“Fn+PageUp”组合键开启。如果电脑键盘的“Space(空格键)”按键上有类似太阳的标识符号,电脑一般带有键盘背光,使用“Fn+Space(空格键)”组合键即可开启键盘背光。若“Sp…

    2022年4月5日
    2.3K
  • spring事务管理全解析

    spring事务管理全解析

    2021年5月9日
    96
  • linux route输出分析,Traceroute原理分析[通俗易懂]

    linux route输出分析,Traceroute原理分析[通俗易懂]traceroute,现代Linux系统上的tracepath,还有Windows系统上的tracert,均是用于同一目的的网络调试工具。它们用于显示数据包在IP网络中经过的路由器的IP地址。原理这些程序是利用IP数据包的存活时间(TTL)值来实现其功能的。当一台计算机发送IP数据包时,会为数据包设置存活时间(TTL)值。每当数据包经过一个路由器,其存活时间值就会减1。当存活时间减到…

    2022年7月21日
    12

发表回复

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

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