我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringMVC @RequestBody自动转json Http415错误如何解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringMVC @RequestBody自动转json Http415错误如何解决

本篇内容介绍了“SpringMVC @RequestBody自动转json Http415错误如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

SpringMVC @RequestBody自动转json Http415错误

项目中想用@RequestBody直接接收json串转成对象

网上查了使用方法,看着非常简单,不过经过测试很快发现页面直接报415错误。

<body>        <h2>HTTP Status 415 - </h2>        <HR size="1" noshade="noshade">            <p>                <b>type</b> Status report            </p>            <p>                <b>message</b>                <u></u>            </p>            <p>                <b>description</b>                <u>The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.</u>            </p>         <HR size="1" noshade="noshade">            <h4>Apache Tomcat/6.0.41</h4></body>

经过一通查,多半的解决方法实说header里的 Content-Type 一定 application/json

但是问题依然没有解决。

最后在《Spring in Action》里找到一个信息

有两个前提条件:

The request&rsquo;sContent-Typeheader must be set toapplication/json.

The JacksonJSONlibrary must be available on the application&rsquo;s classpath. 

我满足了第一个,所以在classpath中添加了一个jar。问题解决了。

        <dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-databind</artifactId>            <version>2.5.3</version>        </dependency>

所以如果大家遇到了同样的问题,可以先排除一下这两个因素。

还有一种情况,在以上两个条件都满足的情况下,还是报同样的错误。

在springmvc的配置文件中必须有:

    <!-- 默认的注解映射的支持 -->    <mvc:annotation-driven />

如果没有这个配置也是会报这个错的!

为什么会引入jackson-databind包呢,因为默认的配置会用到:

com.fasterxml.jackson.databind.ObjectMapper

<mvc:message-converters>            <bean                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">                <property name="objectMapper">                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">                        <property name="dateFormat">                            <bean class="java.text.SimpleDateFormat">                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />                            </bean>                        </property>                    </bean>                </property>            </bean>        </mvc:message-converters>

SpringMVC @RequestBody使用

Spring mvc是一个非常轻量的mvc框架,注解可以大大减少配置,让请求的拦截变得比较简单。这次记录下@RequestBody 注解接收参数尤其是数组参数的用法。

关于容器的配置不再多说,这里写出spring-servlet.xml的sechme:

<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/context              http://www.springframework.org/schema/context/spring-context-4.0.xsd              http://www.springframework.org/schema/beans              http://www.springframework.org/schema/beans/spring-beans-4.0.xsd          http://www.springframework.org/schema/mvc          http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">          <!-- 扫描包注解 --><context:component-scan base-package="xxxx"></context:component-scan><!-- mvc注解功能启动 --><mvc:annotation-driven /></beans>

只要对应包名下面的添加注解即可扫描到对应的控制器,一般采用@Controller

  • RequestBody接收基本类型

@Controllerpublic class TestController {// url请求拦截@RequestMapping("test/test.do")@ResponseBody // 返回参数为JSONpublic void test(@RequestBody String name) {System.out.println("getParams : " + name);}![](https://img-blog.csdn.net/20161114115809292)}

@RequestBody只要接收POST请求Body里的数据。

SpringMVC @RequestBody自动转json Http415错误如何解决

这样发送请求,即可在java控制台中打印:

getParams : {"name":"micro"}

  • @RequestBody接收基本数组

然后我们接收基本类型数组:

@RequestMapping("test/test.do")@ResponseBodypublic void test(@RequestBody List<String> nameList) {System.out.println("getParams : " + nameList);}

SpringMVC @RequestBody自动转json Http415错误如何解决

这样即可获取到参数,不要body里写成了{“nameList”:[“name1”,“name2”]}这样会抛出异常。

@RequestBody是对应的POST请求的body,body即是获取的参数,如果想通过参数去获取,则要使用@RequestParams 注解:

@RequestMapping("test/test.do")@ResponseBodypublic void test(@RequestParam("name") String name) {System.out.println("getParams : " + name);}

SpringMVC @RequestBody自动转json Http415错误如何解决

注意是GET请求,参数直接放到URL后面,这样就可以使用@RequestParams获取到对应参数名的参数值。

如果是复杂的对象。

@RequestBody的使用。

定义model:

class Person {private Long id;private String name;// setter getter}
  • @RequestBody接收复杂对象

接收参数的方式

@RequestMapping("test/test.do")@ResponseBodypublic void test(@RequestBody Person person) {System.out.println("getParams : " + person.getId() + " ," + person.getName());}

即可获取到参数,body里的参数会自动匹配到person的属性并赋值。

注意名字要与对象的属性变量名一致。否则获取不到参数,例如这里就不能在body里写成{“i”:1,“name”:“micro”},这样获取到person的id为null。

  • @RequestBody接收复杂对象数组

如果是复杂对象数组:

@RequestMapping("test/test.do")@ResponseBodypublic void test(@RequestBody List<Person> personList) {for (Person p : personList) {System.out.println(p.getId() + " ," + p.getName());}}

请求方式如下,注意body里的格式是[]数组。

SpringMVC @RequestBody自动转json Http415错误如何解决

控制台打印:

1 ,micro

2 ,micro2

“SpringMVC @RequestBody自动转json Http415错误如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringMVC @RequestBody自动转json Http415错误如何解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringMVC @RequestBody自动转json Http415错误如何解决

本篇内容介绍了“SpringMVC @RequestBody自动转json Http415错误如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
2023-07-06

SpringMVC@RequestBody自动转jsonHttp415错误的解决

这篇文章主要介绍了SpringMVC@RequestBody自动转jsonHttp415错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-15

springmvc自动配置被禁用如何解决

如果Spring MVC自动配置被禁用,可以按照以下步骤进行解决:确保项目中存在spring-webmvc依赖。在pom.xml文件中添加以下依赖:org.springframework.boot<
springmvc自动配置被禁用如何解决
2024-02-29

JSON对象未定义错误如何解决

当出现"JSON对象未定义"错误时,通常是因为JavaScript代码中没有正确引入JSON对象或者JSON对象不可用。要解决这个问题,可以尝试以下几个步骤:1. 确保JSON对象可用:JSON对象是JavaScript的一部分,所以大多数
2023-08-16

vue:axios请求本地json路径错误如何解决

这篇文章主要讲解了“vue:axios请求本地json路径错误如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue:axios请求本地json路径错误如何解决”吧!axios请求本地
2023-06-30

windows驱动程序错误如何解决

今天小编给大家分享一下windows驱动程序错误如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。驱动程序错误解决方法:
2023-06-30

java操作json对象出现StackOverflow错误如何解决

这篇“java操作json对象出现StackOverflow错误如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jav
2023-07-02

SQL启动发生错误1053如何解决

SQL启动发生错误1053通常表示SQL Server服务无法正常启动。以下是一些可能的解决方法:1. 检查SQL Server服务的依赖项:SQL Server可能依赖于其他服务,例如SQL Server Agent或SQL Server
2023-09-15

win10无法启动错误1068如何解决

错误1068通常是由于某些服务未正确启动或停止而引起的。以下是解决此问题的一些建议:1. 检查服务状态:按下Win + R键,输入services.msc并按Enter键。在服务窗口中,确保以下服务的状态为“运行”:Windows自动更新、
2023-08-22

Windows11/10中OneDrive启动错误如何解决

这篇文章主要介绍了Windows11/10中OneDrive启动错误如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Windows11/10中OneDrive启动错误如何解决文章都会有所收获,下面我们一起
2023-05-12

win10蓝牙驱动程序错误如何解决

这篇文章主要介绍“win10蓝牙驱动程序错误如何解决”,在日常操作中,相信很多人在win10蓝牙驱动程序错误如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10蓝牙驱动程序错误如何解决”的疑惑有所
2023-07-02

windows鼠标驱动程序错误如何解决

这篇文章主要介绍“windows鼠标驱动程序错误如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows鼠标驱动程序错误如何解决”文章能帮助大家解决问题。鼠标驱动程序错误解决方法:方法一
2023-06-30

windows无法启动server错误1083如何解决

错误代码1083表示在Windows操作系统中无法启动一个服务。解决此问题的一种方法是尝试以下步骤:1. 重启计算机:有时候服务启动失败可能是由于临时的系统问题引起的。重启计算机可以解决这些问题。2. 检查服务依赖项:有些服务依赖于其他服务
2023-09-05

tomcat启动报创建bean错误如何解决

当Tomcat启动报创建Bean错误时,可能是由于以下几种原因导致的:1. 类路径问题:检查类路径中是否缺少了必要的依赖库。可以通过查看Tomcat日志或控制台输出来查找缺少的类或库,并将其添加到类路径中。2. 配置错误:检查应用程序的配置
2023-09-11

如何解决来自expect库的“不支持”错误

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何解决来自expect库的“不支持”错误》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!问题内
如何解决来自expect库的“不支持”错误
2024-04-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录