捕获并替换过滤器中的JSP响应
我试图编写一个servlet过滤器,在某些条件下,它将读取JSP文件返回的HTML响应并对其进行处理(使用XHTML解析器),并在最终将其返回到浏览器之前对其进行一些修改(基本上,我试图实现一个全局更改,以避免需要单独修改数百个JSP) 我在用Tomcat。我首先为HttpServletResponse和ServletOutputStream提供了一个包装器,然后将它们传递回过滤器链。但是,我得到了一个“IllegalStateException:getOutputStream()已为此响应调用”。每当我们的标记库之一尝试使用“this.pageContext.getOut()”返回的编写器进行写入时,似乎都会发生这种情况,所以我猜Tomcat使用的response/writer/outputstream没有使用我通过过滤器传递的包装器类捕获并替换过滤器中的JSP响应,jsp,servlet-filters,Jsp,Servlet Filters,我试图编写一个servlet过滤器,在某些条件下,它将读取JSP文件返回的HTML响应并对其进行处理(使用XHTML解析器),并在最终将其返回到浏览器之前对其进行一些修改(基本上,我试图实现一个全局更改,以避免需要单独修改数百个JSP) 我在用Tomcat。我首先为HttpServletResponse和ServletOutputStream提供了一个包装器,然后将它们传递回过滤器链。但是,我得到了一个“IllegalStateException:getOutputStream()已为此响应调用
有什么建议吗?或者有没有更好的方法来完成我想做的事情?我认为在您传回修改后的XML之前,已经提交了响应 要知道做出回应的原因 如果您不想得到承诺的响应,您应该做以下两件事:
- 增加页面指令中的JSP缓冲区大小
- 增加服务器默认的最大缓冲区大小 servletresponse.setBufferSize()