【问题标题】:how to check if getwriter or getoutputstream is already used when called inside a servlet file在 servlet 文件中调用时如何检查 getwriter 或 getoutputstream 是否已被使用
【发布时间】:2011-12-24 01:05:16
【问题描述】:

在服务器完成生成 jsp 响应后,我需要在响应中添加一个隐藏标记。我不断收到非法状态异常。所以我使用 getWriter 而不是 getOutputStream 现在它抱怨这个:

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

我在响应包装器中覆盖 getWriter,我在过滤器中传递链

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

由于我在使用 getWriter 或 getOutputStream 之一时遇到错误,我假设我必须以某种方式检查其中哪些已被使用。

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    由于我在使用 getWriter 或 getOutputStream 之一时遇到错误,我假设我必须以某种方式检查其中哪些已被使用。

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

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

    【讨论】:

      【解决方案2】:

      您可以在使用servlet filter 生成响应标头或数据后对其进行修改。第一次实现它需要一些工作,但一旦你完成它并没有那么糟糕而且它们非常强大。

      【讨论】:

        猜你喜欢
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        • 2018-03-25
        • 2015-09-15
        • 2012-07-13
        • 2019-06-23
        • 2015-09-22
        • 1970-01-01
        相关资源
        最近更新 更多