包含和转发请求调度概念的区别?

2022-08-31 20:43:56

Forward() : 这可以通过 Request & ServeletContext 以两种方式完成。将请求从 servlet 转发到服务器上的另一个资源(servlet、JSP 文件或 HTML 文件)。转发是在服务器端完成的,在客户端不知情的情况下。

调用转发请求时,请求将发送到服务器上的另一个资源,而不会通知客户端将有其他资源来处理该请求。此过程完全发生在 Web 容器中。

只是

包含:将在当前文件中包含另一个文件

转发:将当前请求转发到转发页面


答案 1

这两个标签之间的区别在于它们的工作方式。好吧,我会说一个例子,这样你就可以更好地想象它。

假设您有两个页面,页面 A 和页面 B。在页面 A 中,您编写了包含标记。在本例中,控件在 pageA 中,直到您调用了 include 标记。此时,完全控件将转到页 B。完成后,控制权将返回到 pageA,从包含标记之后的下一个编码点开始,并继续到 pageA 的其余部分。

好吧,为了让事情更清楚,假设我们有相同的页面,pageA和pageB,但这次我们将在pageA中使用forward标签,而不是include标签。同样,控件将从 pageA 开始,直到我们在 pageA 中调用 forward 标记,此时,控件将转移到 pageB,就像包含标记一样。但不同之处在于当页面 B 完成时会发生什么情况。如果是 forward 标记,控件不会再次返回到 pageA。


答案 2

主要区别在于,当您使用转发时,控件将传输到您正在调用的下一个 servlet/jsp,而 include 保留当前 servlet 的控件,它只包括由调用 servlet/jsp 完成的处理(如执行任何 out.println 或其他处理)。


推荐