把Apache2.2与Tomcat6进行整合之后,当提交带有中文参数的请求时,经常出现奇怪的现象。在直接访问Tomcat时,可以正常返回结果的请求,一旦经过Apache的代理,就出现问题。

通过Debug发现,Tomcat在经过和不经过Apache代理的两种情况下,得到的中文参数是不同的,而后者是乱码。

从网上查了一下资料,发现Apache在使用AJP13模式代理到Tomcat时,也应该为Tomcat的AJP13设定一些参数。

具体说来,应该在Tomcat的server.xml中设置为:


<Connector port="8085" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
               
<!-- 防止中文乱码 -->
               useBodyEncodingForURI
="true" URIEncoding="UTF8" />
               
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
                            
<!-- 防止中文乱码 -->
                            useBodyEncodingForURI
="true" URIEncoding="UTF8" />