如何在servlet文件中调用时检查是否已使用getwriter或getoutputstream

时间:2011-12-24 01:05:17

标签: java servlets

在服务器完成生成jsp响应之后,我需要在响应中写一个隐藏标记。我一直得到非法的例外。所以我现在使用getWriter而不是getOutputStream来抱怨:

java.lang.IllegalStateException: strict servlet API: cannot call getWriter() after getOutputStream()

我在一个响应包装器中覆盖getWriter,我在我的过滤器中向下传递

从该方法返回时,我用write

附加了东西

由于我在使用getWriter或getOutputStream中的任何一个时遇到错误,我认为我必须以某种方式检查哪些已经被使用过。

2 个答案:

答案 0 :(得分:2)

  

由于我在使用getWriter或getOutputStream中的任何一个时遇到错误,我认为我必须以某种方式检查哪些已经被使用过。

没有标准的方法可以做到这一点。

如果要使用自定义包装器实现此功能,则包装器本身需要跟踪是否已调用getWritergetOutputStream。您可以通过向包装器实现类添加额外的公共方法来公开此状态。

答案 1 :(得分:0)

您可以使用servlet filter修改响应标头或数据。它是第一次实现它的一点点工作,但是一旦你完成它并没有那么糟糕而且它们非常强大。