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?它是默认设置的。我很好奇为什么会提供这种方法。