HTTP请求(POST)字段大小限制& JSP中的Request.BinaryRead

时间:2009-12-01 14:28:00

标签: java jsp request

首先,我的Java已经过时了,我从未做过JSP或servlet,但我正在努力帮助其他人解决问题。

JavaScript呈现的表单将发布回JSP。 此表单中的某些字段大小超过100KB。 但是,当在JSP端检索表单字段时,该字段的值将被截断为100KB。

现在我知道ASP Request.Form中存在类似的问题,可以通过使用Request.BinaryRead来解决。 Java中是否有等价物?

或者,Websphere / Apache / IBM HTTP Server中是否存在可以解决相同问题的设置?

3 个答案:

答案 0 :(得分:1)

由于发布的请求必须由servlet容器保存在内存中以提供ServletRequest API所需的功能,因此大多数servlet容器都具有可配置的大小限制以防止DoS攻击,否则少数虚假客户端可能会引发服务器耗尽内存。

如果WebSphere正在默默地截断请求而不是正确失败,那有点奇怪,但如果这是导致问题的原因,您可能会找到配置选项here in the WebSphere documentation

答案 1 :(得分:1)

我们已经解决了这个问题。 与Web服务器设置无关,因为结果并没有在帖子中截断任何内容。

发布之前的表单字段被JavaScript拆分为102399字节大小的块,每个块都作为值添加到表单字段中,因此最终得到一个值数组。 Request.Form()似乎自动连接这些值以重现单个巨型字符串,但Java getParameter()不会。 然而,使用getParameterValues()并从返回的值重建字符串就可以了。

答案 2 :(得分:0)

您可以使用getInputStream(原始字节)或getReader(解码字符数据)从请求中读取数据。请注意how this interacts并阅读参数。如果您不想使用servlet,请查看使用Filterwrap请求。

我希望WebSphere拒绝请求而不是随意截断数据。我怀疑其他地方有一个错误。