这篇文章是写给哪些在小破站学习ssm教程的兄弟们,我们都是萌新,大佬就让行吧感谢理解!
本文章主要讲解B站赵伟风SSM教程第108节(JSON数据的接收)
我所有的配置都跟老师一样,老师就很顺利发出去了,我的就是一直415,烦死了!!!
经过我的排查问题出现在 我们的配置类中,我们在上课的时候老是都让我们这样写的:
bash
package org.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@EnableWebMvc
@Configuration
@ComponentScan("org.example.json")
public class MVCConfig {
@Bean
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
return new RequestMappingHandlerMapping();
}
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
return new RequestMappingHandlerAdapter();
}
}
问题原因是:
这样写老师没有问题我的就报错了,我滴孩6
为什么呢??
在你手动定义 RequestMappingHandlerAdapter 和 RequestMappingHandlerMapping 时,
默认的 HttpMessageConverter 配置被覆盖或丢失。
默认情况下,Spring 自动配置 RequestMappingHandlerAdapter 并加载 HttpMessageConverter,包括 MappingJackson2HttpMessageConverter,用于处理 JSON 请求。
如果删除手动配置后,Spring 恢复默认行为,因此能够自动解析 application/json,使得 POST 请求可以正确被处理。
说人话就是,你这个不用自己配置 人家spring给你配置好了,你这样一搞,给人家的覆盖了,人家不高兴了,不给你解析Json了jackson来了都不好使!
解决方案1:更改你的配置文件
这样就可以直接解析了
bash
package org.example.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@EnableWebMvc
@Configuration
@ComponentScan("org.example.json")
public class MVCConfig {
// 这里不需要手动定义 requestMappingHandlerAdapter 和 requestMappingHandlerMapping
}
解决方案2:更改你的配置文件
如果确实需要手动配置 RequestMappingHandlerAdapter,你需要确认其包含 HttpMessageConverter,如 MappingJackson2HttpMessageConverter,以便处理 application/json 格式的请求和响应。
bash
package org.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
@EnableWebMvc
@Configuration
@ComponentScan("org.example.json")
public class MVCConfig {
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
adapter.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
return adapter;
}
}