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

Java 如何检查在servlet文件中调用时是否已使用getwriter或getoutputstream,java,servlets,Java,Servlets,在服务器生成jsp响应之后,我需要在响应中写入一个隐藏标记。我一直得到非法州的例外。因此,我使用getWriter而不是getOutputStream,现在它抱怨: java.lang.IllegalStateException: strict servlet API: cannot call getWriter() after getOutputStream() 我在响应包装器中重写getWriter,并在过滤器中向下传递响应包装器 从该方法返回时,我用write追加内容 由于我在使用get

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

java.lang.IllegalStateException: strict servlet API: cannot call getWriter() after getOutputStream()
我在响应包装器中重写getWriter,并在过滤器中向下传递响应包装器

从该方法返回时,我用write追加内容


由于我在使用getWriter或
getOutputStream
中的任何一个时都会出错,因此我假设我必须检查其中哪些已经被使用过

您可以在使用生成响应头或数据后修改响应头或数据。第一次实现一个需要做一点工作,但是一旦你完成了,它就没有那么糟糕了,而且功能非常强大

由于我在使用getWriter或getOutputStream中的任何一个时都会出错,因此我假设我必须检查其中哪些已经被使用过

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

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