gpt4 book ai didi

java - RequestDispatcher.forward() 的树

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:10 25 4
gpt4 key购买 nike

假设我正在运行一个 JSP/Servlet 驱动的网站。用户将数据 POST 到根目录,我有一个处理路径 / 的 servlet (Index.java)。我希望这个 servlet 做的是查看请求中的一些数据并确定第二级 servlet 中的哪一个应该处理它。当它决定哪个第二级 servlet 将处理该请求时,它会 forward() 到该第二级 servlet。

现在我的问题是,如果需要第三级 servlet 会发生什么?第二级 servlet 无法 forward() 到第三级,因为调度程序声称响应已经提交。

视觉上:

Index.java
+SecondLevelA.java
+SecondLevelB.java
\SecondLevelC.java
\ThirdLevelC.java

SecondLevelC.java 无法转发到第三级。我也无法重定向,因为我会丢失重定向中的 POST 参数。需要 POST,因为数据对于 GET 查询来说太大。

最佳答案

RequestDispatcher.forward() 与级别无关。可以分层调用任意次数。唯一的条件是在调用任何 RequestDispatcher.forward() 之前,不应提交响应。对于第一次调用也是如此。

在您的情况下,很可能是第一个子 servlet 导致响应被提交。

以下是提交响应的原因:

Causes of Response getting committed.

关于java - RequestDispatcher.forward() 的树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21949115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com