文章详情页
Java 是否应该在HttpServletResponse.getOutputStream()/getWriter()上调用.close()?
浏览:210日期:2024-05-08 13:34:08
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决Java 是否应该在HttpServletResponse.getOutputStream()/getWriter()上调用.close()??
通常,你不应该关闭流。在Servlet完成作为Servlet请求生命周期的一部分运行之后,Servlet容器将自动关闭流。
例如,如果你关闭流,那么在实现Filter的情况下将不可用。
说了这么多,只要你关闭它,只要你不尝试再次使用它,都不会发生任何不良情况。
编辑:另一个筛选器链接
EDIT2:adrian.tarau是正确的,因为如果你想在Servlet完成其操作后更改响应,则应创建一个扩展HttpServletResponseWrapper的包装器并缓冲输出。这是为了防止输出直接进入客户端,还允许你保护servlet是否关闭流,如以下摘录(强调我的话):
修改响应的过滤器通常必须 在将响应返回给客户端之前捕获该响应。实现此目的的方法是将生成响应的servlet传递给替代流。替身流阻止servlet在完成时关闭原始响应流,并允许过滤器修改servlet的响应。
解决方法我无法通过一些Google搜索找到权威的答案。在Java Servlet中,可以通过response.getOutputStream()或response.getWriter()访问响应主体。写入流后,是否应该在此流上调用.close()?
一方面,Blochian鼓励始终关闭输出流。另一方面,我不认为在这种情况下有需要关闭的基础资源。套接字的打开/关闭在HTTP级别进行管理,以允许诸如持久连接之类的事情。
标签:
java
相关文章:
1. redis sentinel怎么跑守护进程以及日志记录位置的?2. 前端 - 这段代码一直生效不了,查半天因为 top: 0px; 分号后一个隐藏的东西,也不是占位符...删了就可以生效,这是什么情况。。3. javascript - sublime快键键问题4. django - Nginx uwsgi 进程问题5. html5 - ElementUI table中el-table-column怎么设置百分比显示。6. 关于纯用css写导航鼠标移入事件的问题?7. 百度地图api - Android百度地图SDK,MapView上层按钮可见却不可触,怎么解决?8. phpstudy 发现多个后门木马,有人遇到过吗?9. 微信小程序支持跳转到外部链接网页吗10. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?
排行榜

网公网安备