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