返回顶部
首页 > 资讯 > 精选 >SpringMVC @RequestBody自动转json Http415错误如何解决
  • 388
分享到

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

2023-07-06 00:07:39 388人浏览 泡泡鱼
摘要

本篇内容介绍了“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错误如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: SpringMVC @RequestBody自动转json Http415错误如何解决

本文链接: https://lsjlt.com/news/356588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringMVC @RequestBody自动转json Http415错误如何解决
    本篇内容介绍了“SpringMVC @RequestBody自动转json Http415错误如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2023-07-06
  • SpringMVC@RequestBody自动转jsonHttp415错误的解决
    目录SpringMVC @RequestBody自动转json Http415错误SpringMVC @RequestBody使用总结SpringMVC @RequestBody自动...
    99+
    2023-05-15
    SpringMVC @RequestBody @RequestBody自动转json Http415 @RequestBody自动转json
  • 自定义@RequestBody注解如何获取JSON数据
    目录自定义注解自定义解析器包装请求注册解析器用法总结Spring MVC 的 @RequestBody 注解只能将请求体中的 JSON 数据封装成 Bean,而无法对单一字段实施管理...
    99+
    2023-05-15
    自定义@RequestBody注解 @RequestBody注解 @RequestBody注解获取JSON数据
  • springmvc自动配置被禁用如何解决
    如果Spring MVC自动配置被禁用,可以按照以下步骤进行解决: 确保项目中存在spring-webmvc依赖。在pom.xml...
    99+
    2024-02-29
    springmvc
  • 如何解决npm ERR! Unexpected end of JSON错误
    本文小编为大家详细介绍“如何解决npm ERR! Unexpected end of JSON错误”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何解决npm ERR! Unexpected end of...
    99+
    2024-04-02
  • JSON对象未定义错误如何解决
    当出现"JSON对象未定义"错误时,通常是因为JavaScript代码中没有正确引入JSON对象或者JSON对象不可用。要解决这个问...
    99+
    2023-08-16
    JSON
  • Springboot中如何自动转JSON输出
    目录Springboot是如此的暴力原因Springboot自动转json的出现问题问题复现 问题分析及解决办法Springboot是如此的暴力 在Controller中注...
    99+
    2024-04-02
  • SpringMVC @RequestBody属性名大写字母注入失败如何解决
    这篇文章主要讲解了“SpringMVC @RequestBody属性名大写字母注入失败如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMVC @Requ...
    99+
    2023-07-06
  • vue:axios请求本地json路径错误如何解决
    这篇文章主要讲解了“vue:axios请求本地json路径错误如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue:axios请求本地json路径错误如何解决”吧!axios请求本地...
    99+
    2023-06-30
  • 如何解决启动mysql的1069错误
    这篇文章主要介绍“如何解决启动mysql的1069错误”,在日常操作中,相信很多人在如何解决启动mysql的1069错误问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决...
    99+
    2024-04-02
  • windows驱动程序错误如何解决
    今天小编给大家分享一下windows驱动程序错误如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。驱动程序错误解决方法:...
    99+
    2023-06-30
  • java操作json对象出现StackOverflow错误如何解决
    这篇“java操作json对象出现StackOverflow错误如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jav...
    99+
    2023-07-02
  • PHP中如何处理JSON解析错误?
    PHP中如何处理JSON解析错误?JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于存储和传输数据。在PHP中,我们经常使用内置的函数json_decode()将JSON字符串解析为PHP对象或数...
    99+
    2023-12-09
    异常处理 PHP 错误处理 JSON 解析错误
  • mysql无法启动3523错误如何解决
    本文小编为大家详细介绍“mysql无法启动3523错误如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql无法启动3523错误如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • mysql服务启动1053错误如何解决
    mysql启动服务出现1053错误的解决方法第一种方法:首先,使用组合键“win+R”运行“cmd”进入DOS窗口;在DOS窗口中,使用命令“mysqld-nt remove mysqlservice”,卸载服务;等待服务卸载后,使用命令“...
    99+
    2024-04-02
  • SQL启动发生错误1053如何解决
    SQL启动发生错误1053通常表示SQL Server服务无法正常启动。以下是一些可能的解决方法:1. 检查SQL Server服务...
    99+
    2023-09-15
    SQL
  • Windows11/10中OneDrive启动错误如何解决
    这篇文章主要介绍了Windows11/10中OneDrive启动错误如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Windows11/10中OneDrive启动错误如何...
    99+
    2023-05-12
    windows onedrive
  • win10无法启动错误1068如何解决
    错误1068通常是由于某些服务未正确启动或停止而引起的。以下是解决此问题的一些建议:1. 检查服务状态:按下Win + R键,输入s...
    99+
    2023-08-22
    win10
  • mysql1130错误如何解决
    mysql远程连接时出现1130错误的原因是系统数据库mysql中user表中的host是localhost,步骤如何下:在命令行中使用命令,启动mysql服务;service mysqld startmysql服务启动后,继续在命令行是命...
    99+
    2024-04-02
  • word429错误如何解决
    "word429"错误通常是指在使用Microsoft Word时出现的错误。这可能是由于多种原因引起的,下面是一些常见的解决方法:...
    99+
    2023-09-09
    word
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作