<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>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
把这个filter在web.xml里配置一下所拦截的url pattern就行了。
但是这里有个陷阱,整个web应用里,这个filter的拦截顺序必须是第一个,否则还是会出现乱码问题。这是因为(至少在tomcat里):
request对象的parameter并不是一开始就解析的,它是等你第一次调用getParameter*等凡和获得请求参数有关的方法的时候才解析的
paramter一旦被解析过一次,那就不会再次被解析
所以如果在CharacterEncodingFilter之前有另外一个filter,而这个filter调用了getParameter*方法,那么就有可能使用错误的encoding来解析,从而造成乱码问题。