有多个URL和Servlet共同构成了一个基于Java的Web应用程序。 JSP使用两种方法将控制权从一个servlet传递到另一个servlet或JSP,即Forward和Redirect。 Forward方法将请求从一个servlet转发到Web应用程序中的另一个资源,并且该资源可以是另一个servlet,JSP页面或HTML文件。

另一方面,Redirect方法将请求重定向到另一个应用程序。 您不能使用转发方法来执行此操作。 如果重定向在同一应用程序中命中了其他资源,则它使用的URL与原始请求URL的URL不同。 如果您不想响应请求,则可以将请求重定向到其他URL,然后浏览器将新请求发送到您提供的URL。 这篇文章重点介绍了两个差异,详细解释了这两种方法。

什么是转发?

在基于Web的系统或应用程序中,通常需要在不同资源或JSP之间转移控制权。例如,如果您想从电子商务网站下订单,则需要先注册才能继续。如果您尚未在其系统中注册,则购物车可能需要将控制权转移到负责注册过程的JSP表单中。转发动作专门用于此目的。它用于将请求从一个JSP转发到同一上下文中的另一个或另一个资源。

什么是重定向?

此方法也用于转发HTTP请求,但与转发不同,它是一个分为两个步骤的过程,其中重定向是在客户端完全重定向到另一个应用程序。 redirect方法将用户重定向到新的URL。客户端的浏览器会自动在服务器发出的重定向标头中指定的URL上发出新请求。它需要与客户端进行双向通信,因此比转发要慢。

转发和重定向的区别

1. 转发和重定向的描述
forward()方法用于将请求从一个JSP转发到另一个JSP,或者从一个JSP转发到Servlet,或者从一个JSP转发到Web应用程序中的另一个资源。该控件由容器内部传递,并且浏览器/客户端不参与该过程。在RequestDispatcher中声明了forward方法。在HttPServletResponse中声明了SendRedirect()方法,该方法用于将客户端请求重定向到不同的URL,该URL在其他服务器或上下文中可用。通过重定向,您可以将浏览器完全重定向到其他应用程序。

2. 转发和重定向客户端参与
两种方法之间的主要区别之一是,在forward()情况下,Web容器内部处理所有进程,并且客户端浏览器中的URL不变,因此客户端/浏览器不参与其中,从而使它们完全不知道行动已经发生。在使用SendRedirect()的情况下,该方法设置适当的头部和正文内容以将请求重定向到不同的URL,并且浏览器负责将新请求发送到该URL,该URL在浏览器中改变时对客户端可见。 。

3. 执行控制
在请求时间执行forward()方法时,当前请求将转发到另一个JSP页面,并且当前JSP的处理终止。该请求可以转发到用Java编程语言编写的servlet,或者转发到静态HTML页面。 SendRedirect()请求只是告诉浏览器转到另一个URL,将执行控制发送到Web应用程序之外。它使用两步过程来指示浏览器的URL发出另一个请求,该请求将控件转移到客户端。

4. 速度
forward()在服务器内运行,并且执行速度比SendRedirect()更快。重定向必须通过浏览器,然后等待浏览器发出新的HTTP请求。重定向使服务器向浏览器发送带有包含新URL的位置标头的HTTP响应状态代码302,并在浏览器收到状态码302之后,向位置标头中找到的URL发出新请求。这需要与客户端进行往返通信,这使其比forward()相对慢。

总结

了解转发方法和重定向方法的区别是Java开发人员最重要的部分之一。 尽管控制器可以在处理请求结束时执行转发或重定向方法,但它们具有自己的用途。 在大多数情况下,使用forward()方法,因为它比SendRedirect()稍快,而SendRedirect()实际上需要与客户端进行往返通信,从而使其比转发慢。 通过重定向,您可以将浏览器定向到其他应用程序。 转发无法做到这一点。 简而言之,当一个组件必须执行业务逻辑并与另一组件共享结果时,转发效果最佳,而当客户端应从一个页面重定向至另一页面时,重定向效果最佳。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:转发和重定向
本文链接:https://www.vsdiffer.com/vs/forward-vs-redirect.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。