【问题标题】:Capturing and replacing the JSP response in a Filter在过滤器中捕获和替换 JSP 响应
【发布时间】:2012-07-03 14:13:03
【问题描述】:

我正在尝试编写一个 servlet 过滤器,它在某些条件下将读取 JSP 文件返回的 HTML 响应并对其进行处理(使用 XHTML 解析器)并对其进行一些修改,然后最终将其返回给浏览器(基本上我正在尝试实现全局更改以避免不得不单独修改数百个 JSP)

我正在使用 Tomcat。我首先为 HttpServletResponse 和 ServletOutputStream 提供了一个包装器,然后再将它们传递回过滤器链。但是,我收到“IllegalStateException:getOutputStream() 已被调用以获取此响应”。每当我们的一个标签库尝试使用“this.pageContext.getOut()”返回的编写器进行编写时,似乎都会发生这种情况,所以我猜 Tomcat 使用的响应/编写器/输出流没有使用我通过的包装类过滤器。

有什么建议吗?还是有更好的方法来完成我想做的事情?

【问题讨论】:

    标签: jsp servlet-filters


    【解决方案1】:

    我认为响应是在您传回修改后的 XML 之前提交的。

    要知道提交响应的原因,Look here

    如果您不想提交响应,您应该做以下两件事:

    • 在页面指令中增加 JSP 缓冲区大小

    • 增加服务器默认的最大缓冲区大小。

      ServletRespnse.setBufferSize()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多