深入理解Spring系列之十一:SpringMVC-@RequestBody接收json数据报415
Posted JavaQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Spring系列之十一:SpringMVC-@RequestBody接收json数据报415相关的知识,希望对你有一定的参考价值。
网上对这个问题的分析及解决不是很深入,大部分并不能解决问题,而且内容基本相同,拿来主义把内容放在自己的博客上!本篇将深入Spring源码来分析问题出现的根本原因。
报错原因可能有两种情况:
1.请求头中没有设置Content-Type参数,或Content-Type参数值不是application/json;
2.请求头中正确设置了Content-Type参数及参数值,但是在项目jar依赖中(pom.xml或build.gradle)没有添加处理json字符串的处理类,如果SpringMVC框架在启动的时候,检查com.fasterxml.jackson.databind.ObjectMapper和com.fasterxml.jackson.core.JsonGenerator有一个不存在或不能加载,则不会注册MappingJackson2HttpMessageConverter,这个类使用Jackson将json请求参数转成相应的方法参数;同样检查com.google.gson.Gson,如果不存在或不能加载,则不会注册GsonHttpMessageConverter,这个类使用Gson将json请求参数转成相应的方法参数;如果依赖的Jackson和Gson都没有被添加或不能加载,则SpringMVC将找不到对应的参数处理类。
在使用SpringMVC的时候,都会添加<mvc:annotation-driven />注解,这个注解下有很多可以配置的扩展参数,有兴趣的可以研究一下。有这个注解,就必定有对应的注解解析,查看NamespaceHandler接口的实现类,发现有一个MvcNamespaceHandler。
以上是关于深入理解Spring系列之十一:SpringMVC-@RequestBody接收json数据报415的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D Shader编程之十一 深入理解Unity5中的Standard Shader&屏幕像素化特效的实现
quarkus依赖注入之十一:拦截器高级特性上篇(属性设置和重复使用)
quarkus依赖注入之十一:拦截器高级特性上篇(属性设置和重复使用)