转发请求时此异常的理由是什么? response.redirect异常背后的原因是,在将某些响应主体刷新到输出流后,无法发出30x重定向响应头。但我没有看到在内部前锋上这样做的原因。
我想到的用例是尽早从过滤器中刷新html内容,这样浏览器就可以在顶级css和javascript上获得一个良好的开端(双关语),而servlet在传递给演示文稿之前完成其后端工作JSP。通过更快地产生第一个字节,我希望看到客户端性能优势。
Struts和其他框架依赖于前向调度。根据API,正是由于这些前锋,我们无法尽早清除响应内容。
http://download.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html#forward(javax.servlet.ServletRequest,javax.servlet.ServletResponse)
答案 0 :(得分:1)
因为,想象一下,当您向浏览器发送一些<head>
定义,然后转发到完全不同的页面时。结果将是一些搞砸的页面。 (可能)有两个<head>
部分,其中一部分无关紧要。
您可以使用requestDispatcher.include(..)
来包含其他网页的结果,而不是转发给它。