【发布时间】:2010-10-28 04:24:28
【问题描述】:
终止不向客户端返回任何数据的 servlet 的正确方法是什么?
所讨论的 servlet 的目的是从 Ajax 请求中接收一些数据并将 TCP 消息发送到硬件以告诉它更改其状态。
您是否必须指定响应?
我已选择获取对输出流的引用并关闭它,这是正确的吗?
我应该发回一条“嘿,这有效”的消息吗?
【问题讨论】:
终止不向客户端返回任何数据的 servlet 的正确方法是什么?
所讨论的 servlet 的目的是从 Ajax 请求中接收一些数据并将 TCP 消息发送到硬件以告诉它更改其状态。
您是否必须指定响应?
我已选择获取对输出流的引用并关闭它,这是正确的吗?
我应该发回一条“嘿,这有效”的消息吗?
【问题讨论】:
您的 servlet 将在任何情况下发送带有状态码之类的响应标头,我不明白您为什么要在此之上输出任何内容。 :)
【讨论】:
在这些情况下,我通常会返回一条成功消息,例如(在 JSON 中)
{ success: true }
我发现它有时有助于调试!我不认为有一个“正确”的响应,只要你的 servlet 返回一个 200 响应代码(我认为他们会这样做,除非你另有说明)那么就没有问题。
【讨论】:
我觉得回复很好,如果你看类似 gmail 的东西,你会发现很多帖子都收到了
ok
作为回应,我喜欢这个。它简单明了。
要考虑的另一件事是您将如何处理您的请求以某种方式失败的情况,我认为如果它不成功,您的客户可能应该向用户报告一些事情,因此它需要来自servlet。
【讨论】:
如果您只想提供“成功”状态,只需返回 HTTP 代码 200。您不必返回任何流,因为您只想说“OK”。
public void doGet(...) {
response.setStatus(HttpServletResponse.SC_OK);
}
【讨论】: