Forward和Redirect的区别(5大区别详解)

Forward和Redirect的区别(5大区别详解)-mikechen

Forward和Redirect的区别是面试经常被问的内容,下面详解5大Forward和Redirect的区别@mikechen

处理方式的区别

Forward(转发)

Forward是在服务器内部完成的跳转,也称为服务器端跳转

Forward和Redirect的区别(5大区别详解)-mikechen

当服务器收到Forward请求时,它会在服务器内部直接将请求转发到另一个资源,比如:另一个Servlet或JSP页面,然后将该资源的响应发送给客户端浏览器。

Redirect(重定向)

Redirect是一种客户端跳转方式,也称为客户端重定向

当服务器收到Redirect请求时,它会发送一个特殊的HTTP响应,比如:状态码为302或其他重定向代码。

告诉客户端浏览器应该访问新的URL地址,然后,客户端浏览器会发起新的HTTP请求,访问该新的URL。

 

响应过程的区别

Forward

Forward是一次单独的HTTP请求-响应过程,从客户端的角度来看,它只发起了一次请求,URL地址栏保持不变。

Redirect

Redirect是间接转发,实际上有两次HTTP请求,客户端发送请求给servlet1,servlet1调用Redirect方法,这时它需要通知浏览器。

然后浏览器再把请求发送给servlet2,servlet2处理完请求再把响应发回给客户端。

如下图所示:

Forward和Redirect的区别(5大区别详解)-mikechen

请求-响应过程:Redirect涉及两次HTTP请求-响应往返过程。

 

地址栏的区别

Forward

Forward为服务器的直接跳转,客户端浏览器并不知道,地址栏内容不变,是服务器内部的动作。

Redirect

Redirect为客户端浏览器根据URL地址重新向服务器请求,地址栏会变,比如:请求的URI地址发生变化。

 

速度和性能的区别

Forward

由于Forward是在服务器内部进行的,没有额外的HTTP请求-响应往返,通常比Redirect更快,具有较低的性能开销。

Redirect

Redirect通常需要两次HTTP请求-响应往返,因此比Forward略慢一些,具有较高的性能开销。

 

使用场景和用途的区别

Forward

Forward通常用于需要在服务器内部共享请求信息,保持较快速度的情况。

Forward一般用于用户登录的时候,根据角色转发到相应的模块。

Redirect

Redirect通常用于需要将客户端浏览器重定向到新的URL地址,或者需要在不同的HTTP请求-响应周期之间传递信息的情况。

比如:在提交表单后,服务器使用Redirect将用户重定向到另一个页面,以避免浏览器刷新时导致表单的重复提交。

总结:

1.forward是服务器端的转向而redirect是客户端的跳转。

2.使用forward浏览器的地址不会发生改变,而redirect会发生改变。

3.forward是一次请求中完成,而redirect是重新发起请求。

4.forward是在服务端完成,而不用客户端重新发起请求,效率较高。

评论交流
    说说你的看法
欢迎您,新朋友,感谢参与互动!