前端提交数据,我想大家都会想到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.好了,现在可以重新测试一下有没有再次出现乱码问题了,愿君成功!