gpt4 book ai didi

java - Response.getWriter() 应该关闭/刷新

转载 作者:行者123 更新时间:2023-12-04 20:39:08 25 4
gpt4 key购买 nike

当我使用 Web 应用程序时,我注意到有些情况下 resonse.getWriter()被调用并输出给它,这个 PrintWriter从不刷新或关闭。

没有进一步的写入,所以我可能可以安全地刷新或关闭它。该应用程序似乎在不关闭作家的情况下工作正常,并且在 org.apache.catalina.connector.CoyoteAdapter 中确实打电话finishResponse()/finishRequest()无论如何,但这是 tomcat 的内部工作原理,依赖它似乎是错误的。

关闭作者似乎是错误的,因为我不确定我是否真的用 response.getWriter() 打开了作者。称呼。 (通常不是我认为)

冲洗似乎更像是一个好主意,但我确定这是否被认为是“正确”的方式。

不做任何刷新或关闭感觉就像在某些情况下我可能会泄漏资源。

最佳答案

你不需要flush()close() Writer .

这是 Servlet 3.1 规范所说的:

5.6 Closure of Response Object

When a response is closed, the container must immediately flush all remaining content in the response buffer to the client. The following events indicate that the servlet has satisfied the request and that the response object is to be closed:

  • The termination of the service method of the servlet.
  • etcetera


由此我们可以推断,当服务方法返回或由于异常而终止时,应该刷新响应。

我找不到任何明确说明您不需要的内容 close()响应作家。但是,由于 Web 容器管理套接字,因此在请求生命周期(或连接生命周期......如果使用持久连接)的点上不正确关闭它们将是疯狂的。因此,我认为如果您忽略调用 close() 就可以安全地假设不会发生资源泄漏。 . (当然,不会有精心设计的 Web 容器。)

另一方面,如果您知道编写器或输出流是当前请求的响应流/编写器,那么您的 servlet 代码在请求处理结束时刷新和/或关闭它们没有任何危害。

关于java - Response.getWriter() 应该关闭/刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26340901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com