【发布时间】:2017-03-31 04:30:35
【问题描述】:
每个人。
如果将部分数据提交到HttpServletResponse后发生错误, 我可以发送错误消息或替换 http 状态代码吗? 我调查了一些函数(sendError、sendStatus 等),但找不到解决方案。 这很正常,不是吗?
如果是这样,服务器需要在发送大量数据之前存储所有数据。 我认为服务器永远不会有足够的内存。
附言 我必须发送很多数据,例如视频数据。这么大的数据,所以我不想在发送之前存储很多数据。嗯:-(
【问题讨论】:
-
你是对的。您必须在发送响应数据之前设置状态和标头。如果您正确地分离出您的关注点(例如,您可能会使用 MVC 模式),您将知道在开始发送任何响应之前是否需要通过 http 状态报告错误。
-
HTTP 状态码是最先发送的数据项之一。一旦发送,您将无法更改。
-
也就是说,
HttpServletResponse被缓冲了。但是,如果缓冲区溢出 - 服务器将开始发送数据。 -
多年来,我一直使用“命令式”风格,基本上做同样的事情,计算一些东西,输出它们,再计算一些,输出。问题是如果您输出了一半的页面并出现错误,您将无法轻松更改响应。恕我直言,使用“函数式”样式通常更容易,其中整个响应被计算为 String 或 StringBuffer,然后该对象由您的主函数返回并一次全部输出。
标签: java http servlets response mime