我正在尝试编写一个servlet过滤器,在某些条件下将读取JSP文件返回的HTML响应并对其进行处理(使用XHTML解析器)并在最终将其返回浏览器之前对其进行一些修改(基本上我正在尝试实现全局更改,以避免不得不单独修改数百个JSP)
我正在使用Tomcat。我首先提供了HttpServletResponse和ServletOutputStream的包装器,然后再将它们传递回过滤器链。但是,我收到了一个“IllegalStateException:getOutputStream()已被调用此响应。”似乎每当我们的一个taglib尝试使用“this.pageContext.getOut()”返回的编写器进行编写时,我想Tomcat使用的响应/编写器/输出流不使用我通过的包装类过滤器。
有什么建议吗?或者有更好的方法来完成我想要做的事情吗?
答案 0 :(得分:0)
我认为在传回修改后的XML之前会提交响应。
要了解提交回复的原因,Look here
如果您不想提交响应,那么您应该做以下两件事:
在页面指令
中增加JSP缓冲区大小<%@ page buffer =“5kb”autoFlush =“false”%>
增加服务器默认的最大缓冲区大小。
<强> ServletRespnse.setBufferSize()强>