有没有办法判断是否调用了getOutputStream
或getWriter
?
我实现了一个servlet过滤器来修改响应数据,使用HttpServletResponseWrapper
来包装和存储原始响应数据。操作数据后,我需要将其写回原始响应。
根据请求,我发现使用以太getOutputStream
或getWriter
时收到错误
我的应用程序不使用过滤器本身,因此我无法控制用于编写原始响应的代码。
我也无法确保我的过滤器是第一个在链中调用的过滤器,因此我无法实现HttpServletResponseWrapper
来跟踪是否已调用getWriter或getOutputStream。 / p>
现在我做的是
try {
response.getOutputStream().write(newData);
} catch (IllegalStateException e) {
response.getWriter().write(new String(newData,charset));
}
它有效但我从不觉得使用异常来正常"正常"代码流。