前端传输中文到后台乱码问题--web.xml的加载顺序问题

来源:互联网 发布:c语言是汇编语言吗 编辑:程序博客网 时间:2024/06/06 00:11

前端提交数据,我想大家都会想到get和post方式,怎么解决已经有很多的帖子可以参考,比如如下地址http://www.cnblogs.com/super-z/p/6230119.html,但是对于某些情况来说,你会发现问什么这些动作都做了但还是存在乱码的情况,曾经就遇到过这个问题,找了很多的方法都不行,乱码一直存在,后来原因发现了,竟然是项目内做多了一个处理编码的拦截器,配置在web.xml内,加载顺序还比struts的靠前,解决办法如下:

1.发现问题,先使用ctrl+h(小烧用的是eclipse)全项目搜索filter关键字(有遵循命名规则的话。。。。)的过滤器,对过滤器进行查看,要是对传输过程有编码控制,则进入第二步;

2.在web.xml中查看是否有使用该过滤器,要是没有配置,那就不是本文所形容的情况了,建议另找文章,这些有很多;若是有配置该filter,那么他的顺序应该是在struts之上,如下(其中AntiSqlInjectionFilter为做了编码控制的过滤器)

<filter>        <filter-name>AntiSqlInjectionfilter</filter-name>        <filter-class>            com.AntiSqlInjectionfilter        </filter-class></filter>    <filter-mapping>        <filter-name>AntiSqlInjectionfilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping><filter>        <filter-name>struts2</filter-name>        <filter-class>            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter>    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

3.将过滤器的<filter-mapping>...</filter-mapping>段放置到struts2的<filter-mapping>...</filter-mapping>后,如

<filter>        <filter-name>AntiSqlInjectionfilter</filter-name>        <filter-class>            com.AntiSqlInjectionfilter        </filter-class></filter><filter>        <filter-name>struts2</filter-name>        <filter-class>            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter>    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <filter-mapping>        <filter-name>AntiSqlInjectionfilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

4.好了,现在可以重新测试一下有没有再次出现乱码问题了,愿君成功!

原创粉丝点击