tomcat 接收 GET、PUT、DELETE 请求的参数

最近在使用ajax提交一个put请求到后台时,发现后台能正常接收到put请求,但是请求参数却收不到。代码如下:

var testData = $("#test-fm").serialize(); 
$.ajax({
    url:"test.do",
    data:testData,
    type:"PUT",
    success:testAjaxHandler
});
一开始以为是代码问题,各种试,最后发现将testData附加到URL后面时,后台能正常收到,而用上面的方式,死活收不到。于是反应过来,应该是用PUT方式提交时,服务器没有将RequestBody中的参数给转换过来。Google一翻后发现:tomcat默认情况下,只会转换POST请求中的参数。 于是在tomcat服务器的conf目录下server.xml中的Connector标签中,添加一个 parseBodyMethods属性就可以。如下:
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               parseBodyMethods="POST,PUT,DELETE"/>
使用ajax发送DELETE请求时,也照上述方法即可。 然而,在使用GET方法时,如果参数是跟在URL后面的,遇到乱码时,也可以修改Connector标签,添加一个“URIEncoding”属性就可以了,如下:
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               parseBodyMethods="POST,PUT,DELETE" 
               URIEncoding="UTF-8"/>