最近在写一个前后端分离项目,前后端数据交互都使用json的格式,在使用SpringMVC的@RequestBody时,一直报415的错误,意思就是后台无法处理content-type=application/json格式的数据,我后台已经使用@RequestBody,就是不行,但是如果参数类型为String就可以接收,实体类的就是不行,看了很多教程,冲浪了一天,终于找到了解决方案。
解决方式:
1。在项目中导入两个jar包
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
2.在app-servlet.xml(你的springmvc配置文件),加入一行配置
<mvc:annotation-driven/>
或者配置一个适配器(两种方式选一个即可,我是使用的上面的方式)
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</list>
</property>
</bean>
这样就解决了415的报错。
附上我的controller层的代码。
@RestController
@CrossOrigin
public class LoginController {
@PostMapping("/loginPost")
public String loginPost(@RequestBody User user,@RequestHeader HttpHeaders header){
System.out.println(header.getContentType());
System.out.println(user.getName());
System.out.println(user.getPassword());
return "success";
}
}