setContentLength设置为高

时间:2014-08-01 06:42:49

标签: java java-ee content-length

setContentLength方法用于设置响应的长度,其大小高于实际大小时,为什么容器不会自动计算长度?

例如,

String s = "hello";
byte[] b = s.getBytes();

response.setContentLength(100);
response.getOutputStream().write(b);
response.flush();

当我点击servlet时,加载页面大约需要半分钟,这是因为内容长度标题..?

这种方法有什么需要?为什么不能让容器自己计算响应的长度?

1 个答案:

答案 0 :(得分:2)

如果要返回大量内容,加载完整响应并立即发送它通常是不切实际的,而是加载并以块的形式发送。由于长度是作为响应开始的一部分发送的,因此容器无法在以后更改它。

在这种情况下,你告诉容器你的响应是100字节,你发送前5个字节(触发标题" Content-Length:100"也发送),所以现在收件人预计还会有95个字节。

另一方面,现在,假设您的内容为10GB,您不希望先将所有内容加载到内存中,以便容器计算大小。