springmvc——CharacterEncodingFilter过滤器要放在所有过滤器前面
CharacterEncodingFilter的拦截顺序必须是第一个,否则还是会出现乱码问题。这是因为
-
request对象的parameter并不是一开始就解析的,它是等你第一次调用
getParameter*
等凡和获得请求参数有关的方法的时候才解析的 -
paramter一旦被解析过一次,那就不会再次被解析
所以如果在CharacterEncodingFilter
之前有另外一个filter,而这个filter调用了getParameter*
方法,那么就有可能使用错误的encoding来解析,从而造成乱码问题。