在使用SpringMVC框架开发项目中,乱码问题是我们最常遇到的,明明设置了处理方式,但是还是存在乱码问题,今天分享几个常用的乱码处理方式。
随着Vue的出现,公司中做的项目都采用前后分离的技术,而前后端交互使用的数据格式都为json格式。
前端JSON格式的转换
<script>
var user = {
name:"zhangsan",
age:"18",
sex:"男"
};
// js对象转换为json对象
var str = JSON.stringify(user);
console.log(str); // {"name":"zhangsan","age":"18","sex":"男"}
// 解析json数据,将json数据转换为字符串对象
var u = JSON.parse(str);
</script>
在SpringMVC中存在@ResponseBody注解,这个注解可以将服务器返回的对象转化为json格式返回到前端页面,对应的@RequestBody注解是可以将前台发送到后台的xml格式数据或者json格式数据转化为JavaBean对象。
1. 方式一:通过设置@RequestMapping的produces属性。
@RequestMapping(value = "json1",produces = "application/json;charset=utf-8")
@ResponseBody
public String json() throws JsonProcessingException {
// 创建对象
User user = new User("张三",18,"男");
// 格式化对象
return new ObjectMapper().writeValueAsString(user);
}
2. 方式二:设置springmvc.xml配置文件的<mvc:annotation-driven>
<mvc:annotation-driven conversion-service="conversionService">
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>