之前在网上查了好多方式,最后自己看了一下CharacterEncodingFilter的源码,发现跟以前的源码有些不一样,以前都是forceEncoding,新版本的SpringMvc分成了forceRequestEncoding和foreResponse两个,所有都要设置,有兴趣的同学可以看一下源码,原理还是利用了request.setCharacterEncoding,还有一点,如果设置了还不起作用的话,把这个filter
设置在首先位置,以免拦截不到,因为这个filter是在获取参数之前设置到,而其它的filter可能是已经获取到参数了,所以可能出现失效的情况
web.xml
<!--配置编码拦截器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<!--编码-->
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!--请求和相应-->
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>