<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>/web/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
该方式为什么对POST而对GET无效呢?
不妨看看CharacterEncodingFilter内的实现 doFilterInternal
该方法调用
request.setCharacterEncoding(this.encoding);
而该方法的说明
Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().
注意到没,只对body起作用。
而get方式的请求参数在hearder里
post方式的请求参数在body里
原因自然清晰了。http://blog.csdn.net/untager/article/details/6334163