Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java setContentLength设置为高_Java_Jakarta Ee_Content Length - Fatal编程技术网

Java setContentLength设置为高

Java setContentLength设置为高,java,jakarta-ee,content-length,Java,Jakarta Ee,Content Length,当使用setContentLength方法设置响应的长度时,响应的大小比实际大小大,为什么容器不能自动计算长度 比如说, String s = "hello"; byte[] b = s.getBytes(); response.setContentLength(100); response.getOutputStream().write(b); response.flush(); 当我点击servlet时,加载页面大约需要半分钟的时间,这是因为content-length标题吗 这种方法的

当使用
setContentLength
方法设置响应的长度时,响应的大小比实际大小大,为什么容器不能自动计算长度

比如说,

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

response.setContentLength(100);
response.getOutputStream().write(b);
response.flush();
当我点击servlet时,加载页面大约需要半分钟的时间,这是因为content-length标题吗


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

如果您想返回大内容,通常不可能加载完整响应并立即发送,而是将其分块加载并发送。由于长度是作为响应开始的一部分发送的,因此容器以后无法更改它

在本例中,您告诉容器您的响应是100个字节,然后发送前5个字节(这会触发也发送标题“Content Length:100”),因此现在收件人将期望另外95个字节


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

为什么您要手动设置contentLength?它是默认设置的。我很好奇为什么会提供这种方法。