假设我正在运行JSP / Servlet驱动的网站。用户将数据POST到根目录,我有一个处理路径Index.java
的servlet(/
)。我希望这个servlet做的是查看请求中的一些数据,并确定哪个第二级servlet应该处理它。当它决定哪个二级servlet将处理请求时,它forward()
到那个二级servlet。
现在我的问题是,如果需要第三级servlet会发生什么?第二级servlet不能forward()
到第三级,因为调度程序声称响应已经提交。
目视:
Index.java
+SecondLevelA.java
+SecondLevelB.java
\SecondLevelC.java
\ThirdLevelC.java
SecondLevelC.java
无法转发到第三级。我也无法重定向,因为我将在重定向中丢失POST参数。 POST是必需的,因为数据对于GET查询来说太大了。
答案 0 :(得分:1)
RequestDispatcher.forward()
与关卡无关。它可以分层次地调用任意数量的时间。唯一的条件是在调用任何RequestDispatcher.forward()
之前,不应该提交响应。第一次调用也是如此。
在您的情况下,最可能的第一个子servlet导致响应被提交。
以下是提交回复的原因: