我遇到了一些代码,它们在将servlet输出返回给用户之前将其拉出来,它使用自定义的ServletResponseWrapper
-it如果你知道我在说什么就这么着名,我的问题是:
1 - 现在拦截响应的功能完全是响应包装器的责任 - 通过覆盖它返回的输出流 - 过滤器对这种行为没有影响吗?我是对的吗?
2-如果过滤器拦截其请求的任何servlet关闭输出流会发生什么,chain.doFilter()之后的代码是否能够再次使用此流?过滤器会起作用吗?
3为什么包装的响应解决了"输出在被过滤器拦截之前直接返回到容器的问题" ...我的意思是为什么对响应的控制然后返回到过滤器?
答案 0 :(得分:1)
我最近使用了本书中的示例代码来完成我的项目: Professional Java for Web Applications。第9章中有一个很好的压缩过滤器示例。
我没有参与这本书背后的公司。
以下是您问题的答案:
HttpServletResponse
,此时包装器负责管理输出流(但不是用于关闭流)。 HttpServletResponse
。chain.doFilter()
之后的行中继续执行您的Web应用程序,如果有必要,您可以将一些数据写入包装的响应。但是不要在你的过滤器和servlet中关闭流。