request.getParameter返回截断的值

时间:2015-02-03 07:52:27

标签: javascript jquery jsp tomcat7 httprequest

我通过jQuery ajax方法发送大型UTF-8文本数据(有时包含中文)。该方法设置为POST。但是在我的服务器端(我正在使用tomcat 7),每当我做request.getParameter时,它都会截断数据。

数据示例:var datas = "article={some very long UTF-8 text}&id=234&author=3434"

我的jquery代码:

$.ajax({
        type: "POST",
        url: src,
        processData: true,
        data: datas,
        cache: false,
        success: function(response){

        },
   })

通过阅读一些文章,我发现我必须更改连接器并设置maxPostSizemaxHTTPHeaderSize。我做了所有,并改为大值,但结果相同。请指导我为什么会这样,以及如何解决它?

3 个答案:

答案 0 :(得分:1)

除了增加maxPostSize之外,我只更改了数据并使用encodeURIComponent进行编码。 request.getParameter正在返回截断的数据,因为它由于特殊字符呈现UTF-8文本而中断。我将数据更改为

var datas = "article="+ encodeURIComponent({some very long UTF-8 text})+"&id=234&author=3434"

在服务器端(Java)我使用

String article = request.getParameter("article");
if(article !=null) // null check is necessary to prevent from exception if value is not sent by client
 article = URLDecoder.decode( article );

并且事情对我有用。

答案 1 :(得分:0)

POST方法默认大小为 2M

如果您使用tomcat作为Web容器,请尝试增加maxPostSize

<Connector
   debug="0"
   acceptCount="100"
   connectionTimeout="20000"
   disableUploadTimeout="true"
   port="8080"
   redirectPort="8443"
   enableLookups="false"
   minSpareThreads="25"
   maxSpareThreads="75"
   maxThreads="150"
   maxPostSize="0"
  URIEncoding="GBK"
> 

如上所述,将maxPostSize设置为 0 ,表示发布数据时无限制大小。

答案 2 :(得分:0)

Input Text Box:<INPUT size="30" type="text" maxlength="30" name="aField" value='<%=stringField%>'>