HTTP Status 415 Unsupported Media Type [Spring MVC @RequestBody传递Json数据 ]

本文介绍了解决415UnsupportedMediaType错误的方法,包括在spring-mvc-servlet.xml中配置mvc:annotation-driven,引入jackson包以实现JSON格式转换,设置$.ajax的contentType为application/json,以及正确使用@RequestBody和@ResponseBody。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##1.错误信息

  1. 415 Unsupported Media Type
  2. The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.

这里写图片描述

##2.解决
###2.1.mvc:annotation-driven
spring-mvc-servlet.xml文件中增加对mvc:annotation-driven的配置,如下:

<!-- Spring MVC默认的注解映射的支持 :提供Controller请求转发,json自动转换等功能-->
<mvc:annotation-driven />

<!--开启注解:提供spring容器的一些注解-->
<context:annotation-config/>

##2.2.pom.xml引入jackson包

<jackson.version>2.9.0</jackson.version>

<!--jackson 通过@RquestBody传参时,将对象转换成json格式。
    通过@ResponseBody返回值时,将对象转换成json格式-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>

##2.3.$.ajax指定contentType

//@Requestbody只能处理非application/x-www-form-urlencoded格式的请求,
//所有需要指定其格式为application/json
$.ajax({
    type:"POST",
    url:url,
    data:JSON.stringify(
        {name:"张三",sex:"男"}
    ),
    contentType:"application/json; charset=utf-8",
    success:function (data) {
        console.log(data)
    }
});

##2.4.@RequestBody @ResponseBody
@RequestBody@ResponseBody都要有,@RequestBody用来将JSON字符串转化成POJO对象,后者将POJO对象转化成JSON字符串

    @PostMapping("/requestbody")
    @ResponseBody
    public String insert(@RequestBody User user, Model model){
        return "/requestannotation/requestbody";
    }

##2.5.result
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值