Everything is a contribution

走过Java的点点滴滴,与大家共勉~
随笔 - 21, 文章 - 0, 评论 - 10, 引用 - 0
数据加载中……

web.xml的filter执行顺序导致的乱码,切记!

    今天跟项目组做集成的时候发现一个很奇怪的乱码问题,web.xml的filter、jsp页面均进行了编码设置, 反复调试发现引起bug的原因是web.xml的下面几行:
    <filter-mapping>
        <filter-name>SecurityFilter</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

根据servlet2.3规范filter执行是按照web.xml配置的filter-mapping先后顺序进行执行,所以上面的配置会导致遇见*.do的url请求,先进行SecurityFilter的过滤器处理,这时候没有做编码处理,已经是乱码,到下面的filter处理时已经时乱码,再做编码处理已经没有用处。

修正方式,调整filter-mapping顺序,如下:

    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>SecurityFilter</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

posted on 2007-01-31 17:04 Kevin Xia 阅读(3747) 评论(2)  编辑  收藏 所属分类: Java开发

评论

# re: web.xml的filter执行顺序导致的乱码,切记![未登录]  回复  更多评论   

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我门都是这样写的 不知道 这样有什么问题
每次 提交表单是乱码
然后刷新一下 显示就是好的了
email:gcc1984629@163.com
2007-08-17 14:45 | cc

# re: web.xml的filter执行顺序导致的乱码,切记!  回复  更多评论   

不错呢
2010-04-01 10:52 | Nassir

只有注册用户登录后才能发表评论。


网站导航: