EE中的javax.servlet.HttpServletRequest.getContentLength()正确行为?

时间:2014-06-10 04:24:10

标签: java servlets

我的问题重复javax.servlet.HttpServletRequest.getContentLength() returns int only,但我对不同感兴趣。什么是正确的回报 当内容长度大于Integer.MAX_VALUE时,javax.servlet.HttpServletRequest.getContentLength()? 问题作者认为它是-1。但是,servlet规范并未涉及该主题。 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getContentLength%28%29 当长度未知时,它表示为-1。这是不正确的,因为长度是已知的,根本不适合整数。 EE7弥补了这一差距 http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html#getContentLength%28%29 甚至介绍了getContentLengthLong()。 但是我的问题是,如果我实现EE6规范,在内容长度> 1的情况下,什么是正确的行为? Integer.MAX_VALUE的?

1 个答案:

答案 0 :(得分:1)

您需要阅读Java EE 7 version of ServletRequest.getContentLength()的JavaDoc。

非常明确地说:

  

...如果长度未知或大于Integer.MAX_VALUE

,则为-1

请注意,如果您尝试阅读大型请求主体,那么无论如何它几乎肯定会被分块。当然,许多HTTP防火墙和代理都会将大型机构分块。