redirect重定向(间接转发)和forward转发(直接转发)

用户向服务器发送了一次HTTP请求,该请求有时会经过多个信息资源处理以后才返回给用户。各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种有何区别呢?

直接转发 forward:浏览器发出一次请求,服务器的一个信息资源响应之后,转发给服务器的另一个信息资源处理,之后再返回信息到浏览器。
间接转发 redirect:浏览器发出一次请求,服务器的一个信息资源响应之后,返回给浏览器一个url。浏览器自动去请求这个url。

举个通俗的例子:
直接转发就相当于:“A找B借钱,B没有,B去找C借,借到借不到都会把消息传递给A”;
间接转发就相当于:"A找B借钱,B说没有,让A去找C借。然后A去找C借"。

直接请求转发图解:

直接请求转发图解

上图所示的直接转发请求的过程如下:

1. 浏览器向Servlet1发出访问请求;

2. Servlet1调用forward()方法,在服务器端将请求转发给Servlet2;

3. 最终由Servlet2做出响应

间接请求转发图解:

间接请求转发图解

上图所示的间接转发请求的过程如下:

1. 浏览器向Servlet1发出访问请求;

2. Servlet1调用sendRedirect()方法,将浏览器重定向到Servlet2;

3. 浏览器向servlet2发出请求;

4. 最终由Servlet2做出响应。

springboot中的实现是:httpServletResponse.sendRedirect(url); url是转发的响应地址

请求转发和重定向的区别和共同点:

请求转发和重定向的区别和共同点

参考文章https://www.cnblogs.com/fankailei/p/10008512.html

参考视频  https://www.bilibili.com/video/av40056765?p=32

你可能感兴趣的:(redirect重定向(间接转发)和forward转发(直接转发))