文章詳情頁
Java 是否應該在HttpServletResponse.getOutputStream()/。getWriter()上調用.close()?
瀏覽:114日期:2024-04-15 14:00:29
如何解決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. 解決Android webview設置cookie和cookie丟失的問題2. javascript - nodejs使用mongoose連接數據庫,使用post提交表單在后臺,后臺處理后調用res.redirect()跳轉界面無效?3. javascript - vue2.0中,$refs對象為什么用駝峰的方式獲取不到屬性?4. javascript - 能否讓vue-cli的express修改express重啟服務5. Android頂部的顯示電池、wifi等信息的狀態欄在不在當前Activity的decorView中?6. java - 注解上的屬性可以傳遞嗎?7. android - 分享到微信,如何快速轉換成字節數組8. node.js - npm install全局安裝出錯,請問如何解決?謝謝!9. node.js - npm一直提示proxy有問題10. python bottle跑起來以后,定時執行的任務為什么每次都重復(多)執行一次?
排行榜
