把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" />