@RequestBody接受参数报415错误

2022年11月2日11:55:43

1.简介

@RequestBody

作用

1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;

2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

使用时机

1) GET、POST方式提时, 根据request header Content-Type的值来判断:

A.application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);

B.multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);

C.其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

2) PUT方式提交时, 根据request header Content-Type的值来判断:

A.application/x-www-form-urlencoded, 必须;

B.multipart/form-data, 不能处理;

C.其他格式, 必须;

说明

request的body部分的数据编码格式由header部分的Content-Type指定;

requestBody接收的是JSON对象的字符串,AJAX传递数据使用的是JSON,所以需要使用JSON.stringify()转化为JSON字符串,从而被requestBody接收。

@ResponseBody

作用

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机

返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;


2.Spring MVC的配置文件

增加<mvc:annotation-driven />配置


3.需要的jar包

在Maven中增加依赖

Spring-webmvc 和  jsckson-mapper-asl

注:在jsp中使用ajax提交时出现了下面的问题: 415 (Unsupported Media Type), 可能出现的原因如下:
1. dataParam 格式错误,不符合json字符串规范
2. dataParam 参数不能绑定到控制器方法的参数上面,不是一一对应
3. 没有在ajax提交时设置contentType
contentType指的是前台传递到后台的格式,dataType指的是由后台传到前台的格式
4. jackson的jar包不对或者不全:
不应该使用org.codehaus.jackson下面的jackson.jar, 应该使用
com.fasterxml.jackson.core下面的jackson-core和jackson-databind 的jar包
5. 加上<mvc annotation-driven>

转载于:https://blog.51cto.com/7629052/1927256

  • 作者:weixin_34417183
  • 原文链接:https://blog.csdn.net/weixin_34417183/article/details/92644675
    更新时间:2022年11月2日11:55:43 ,共 1347 字。

把实用的技术和经验,分享给最需要的读者,希望每一位来访的朋友都能有所收获!

站点地图