捕获并替换过滤器中的JSP响应

捕获并替换过滤器中的JSP响应,jsp,servlet-filters,Jsp,Servlet Filters,我试图编写一个servlet过滤器,在某些条件下,它将读取JSP文件返回的HTML响应并对其进行处理(使用XHTML解析器),并在最终将其返回到浏览器之前对其进行一些修改(基本上,我试图实现一个全局更改,以避免需要单独修改数百个JSP) 我在用Tomcat。我首先为HttpServletResponse和ServletOutputStream提供了一个包装器,然后将它们传递回过滤器链。但是,我得到了一个“IllegalStateException:getOutputStream()已为此响应调用

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

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


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

我认为在您传回修改后的XML之前,已经提交了响应

要知道做出回应的原因

如果您不想得到承诺的响应,您应该做以下两件事:

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

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

    servletresponse.setBufferSize()