Spring 字符过滤器解决乱码

当你用尽了网上的方法还是解决不了乱码问题,或是嫌网上的解决方法太麻烦时,你想到了过滤器,当您辛辛苦苦写了一个过滤器,或是用了Spring的过滤器还是没解决问题时,那么你就会很恼火,我最近就遇上这么一个问题,用尽了网上的方法,spring设置的过滤编码也是UTF-8,但就是不起作用,如下:

 <filter>
        <filter-name>SetCharacterEncoding</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>
    </filter>

到后来发现,

<filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

的位置放错了,放到了WEB.XML 的最后,所以我设置的过滤器根本就没起到作用,改变了一下位置

<filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>紧紧的放在

<filter>
        <filter-name>SetCharacterEncoding</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>
    </filter>的后面,我的乱码问题终于解决了。

总结:web.xml中过滤器的设置,<filter-mapping>
最好紧紧的放在<filter>的后面,如下:

<filter>
        <filter-name>SetCharacterEncoding</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>
    </filter>

<filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

这样或许就能解决你的问题。

猜你喜欢

转载自peryou.iteye.com/blog/1773371