黑马程序员技术交流社区

标题: 【上海校区】重定向与转发的区别 [打印本页]

作者: 不二晨    时间: 2019-3-8 10:35
标题: 【上海校区】重定向与转发的区别
重定向与转发的区别

一、API调用的区别

转发:

request.getRequestDispatcher("/...").forward(request,response);
1
重定向:

response.sendRedirect("/...");

或者

response.setStatue(302);
response.setHeaders("location","/...");
1
2
3
4
5
6
二、流程上的区别

转发流程:

1.由客户端发起一个HTTP请求。
2.服务端ServletA接收到HTTP请求,调用Web应用内部的ServletB,将request请求传递或转发出去。
3.ServletB接收到转发的信息,处理完之后,将传递给ServletA。
4.ServletA就将ServletB的信息响应给服务器。
注意:转发是在服务器内部的发生的,而且是在同一个Web应用下的Servlet之间发生的,对于客户端来说,只有一次请求和响应

重定向流程:

1.有客户端发起HTTP请求
2.服务端接收到请求后,服务端告诉客户端去访问sendRedirect()中的指定的location,并且响应给客户端。
3.客户端接收到服务器的响应后,再次发送HTTP请求(请求的是sendRedirect()中的指定的location)。
4.服务端(和上面说的服务端可以不是同一个)接收到请求后,给出响应。
注意:重定向是客户端经过2次或多次对服务器进行访问的,2次或多次访问的的服务器可以是不一样的

总结:转发是服务器行为,重定向是客户端行为,转发是request对象调用api处理,重定向是response对象调用api处理
---------------------
【转】作者:张行之
来源:CSDN
原文:https://blog.csdn.net/qq_33689414/article/details/57409707
版权声明:本文为博主原创文章,转载请附上博文链接!


作者: 不二晨    时间: 2019-3-11 15:23
奈斯,感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2