Servlet详解(五)--重定向与转发

重定向与转发本质都是跳转到新的URL

下面是图解:

重定向与转发的本质区别在于:转发是一个服务端的行为,而重定向是一个浏览器的行为。

一、过程:

转发:浏览器发送请求到服务器==》Server根据Servlet内部代码将请求转发至新的Servlet(jsp,html,Request还是原先那个)==》新的Servlet将响应返回至Client端

特点:转发必须在同一个web服务器里面(否则服务器无权转发),一次转发对于client是不可见的,client只能看见自己发出一次请求,收到一次响应,URL依然是第一次访问的路径。Request与Response相同。

重定向:client第一次向server发出请求==》server通过servlet选择重定向并向client作出响应==》响应返回状态码为302,内容包括location地址==》client接收到响应并解析响应包,向新的location发起第二次访问请求(url已经成为第二次的路径,且一个新的Request)==》访问到地址二后,地址二作出第二次响应

特点:转发是可以在多个服务器的(百度点击都是重定向),重定向对于client来说是两次访问,第二次url也会改变,Request与Response都是两个。

当然,转发虽然限制比较大(同一个web服务器),但是速度会比重定向快(省略掉了一次http请求(握手挥手等操作))。

原文地址:https://www.cnblogs.com/qqwhsj/p/10860854.html