struts2中文乱码解决方案

    技术2022-05-11  3

         这个问题可害苦我了,我用的是mysql的数据库,将数据保存到数据库表时,发现凡是中文的地方都变成了?,我怀疑是mysql的编码问题,将程序编码和数据库表的编码更改了N遍,还是乱码,实在没有办法了,我调试一个程序,原来在将数据保存到数据库之间,已经出现了乱码,难道struts2也会出现乱码,在网上百度了一下,确实这样,解决方法如下:

    在struts.xml文件中一个常量:

    <struts> <constant name="struts.i18n.encoding" value="GBK"/> <include file="struts-default.xml"/> </struts>

    重新启动Tomcat,测试,居然还是乱码,气煞我也,又折腾了N久,这个问题终于被我给揪出了,原来在web.xml文件中必须添加一个filter

    <filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

    注意了:struts2中web.xml配置是有顺序的。

      在web.xml中EncodingFilter的位置应该在Struts2的FilterDispatcher之前,因为要先调整字符集,然后进入Action。

    按照Struts2的API,filter的顺序是 struts-cleanup filter SiteMesh filter FilterDispatcher。

     

    这个乱码问题终于被解决了,功夫不负有心人啊,凡事只要有耐心和恒心,什么困难也阻挡不了我们继续前进。

    有种很高兴的感觉,呵呵!


    最新回复(0)