[英]Response Filters using ResposeWrapper
我遇到了一部分代碼,在將servlet輸出返回給用戶之前先對其進行了ServletResponseWrapper
,它使用了自定義的ServletResponseWrapper
如果您知道我在說什么,這就是很有名的-,我的問題是:
1-現在攔截響應的功能完全是響應包裝器的責任-通過覆蓋返回的輸出流-過濾器對這種行為沒有影響嗎? 我對么 ?
2-如果過濾器攔截其請求的任何servlet封閉了輸出流,chain.doFilter()之后的代碼將能夠再次使用該流嗎? 過濾器會工作嗎?
3為什么包裝的響應解決了“輸出在被過濾器攔截之前直接返回到容器”的問題……我的意思是為什么對響應的控制然后又返回到過濾器?
我最近在我的項目中使用了本書中的示例代碼: Web應用程序的Professional Java 。 第9章提供了一個很好的壓縮過濾器示例。
我沒有參與這本書背后的公司。
這些是您的問題的答案:
HttpServletResponse
,從此刻開始,包裝器將負責管理輸出流(但不負責關閉流)。 HttpServletResponse
,關閉自己代碼中的輸出流都不是一個好主意。 chain.doFilter()
之后的一行中繼續執行Web應用程序,並且如有必要,您可以將一些數據寫入到包裝的響應中。 但是,無論是在過濾器中還是在Servlet中,都不要關閉流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.