如何解决Spring MVC中响应乱码问题
Spring MVC最新响应中乱码解决方式
以前的解决办法
<!--启用包扫描-->
<context:component-scan base-package="com.mufeng"/>
<!--放行静态文件-->
<mvc:default-servlet-handler/>
<!--开启SpringMVC注解开发并解决乱码问题-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<!--通过对StringHttpMessageConverter类的List做添加,修改响应的编码-->
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>这是比较通用的一种方法
但是它有一种缺点,就是你响应一种数据添加一种,比较麻烦。而且在之前的版本中默认的响应类型为text/html;charset=ISO-8859-1,且其被final关键字修饰,无法进行修改。
但是在5.2.19.RELEASE之后的版本中,通过阅读源码可知:
StringHttpMessageConverter的父类AbstractHttpMessageConverter<T>中有了这样一行代码:
public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConverter<T> {
.....
@Nullable
private Charset defaultCharset;
.....虽然它默认的编码集还是ISO-8859-1,但是它已不再被final修饰,这就意味着我们可以在Spring配置文件中直接对其进行注入,修改Spring http响应的默认编码集。
代码如下:
<!--解决乱码问题-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="defaultCharset">
<value>UTF-8</value>
</property>
</bean>
</mvc:message-converters>这种方法更简洁高效,而且通过此方法我们不需要在前端代码中处理响应时担心后端穿过来的编码集错误。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot使用MyBatis的XML文件进行SQL语句编写
在现代 Java Web 开发中,Spring Boot 和 MyBatis 是两个非常流行的技术框架,本文将详细介绍如何在 Spring Boot 项目中使用 MyBatis 的 XML 文件来编写 SQL 语句,感兴趣的可以了解下2025-07-07
Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码详解
这篇文章主要介绍了Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码,通过开发实践,理解过滤器和拦截器的工作原理,需要的朋友可以参考下2018-06-06
java 使用BeanFactory实现service与dao层解耦合详解
这篇文章主要介绍了java 使用BeanFactory实现service与dao层解耦合详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12


最新评论