彻底搞明白请求转发与重定向的区别

请求转发

request.getRequestDispatcher().forward();
是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程是在服务器实现的,并不是在客户端实现的所以客户端并不知道这个跳转动作,所以它的地址栏还是原来的地址。

重定向

response.sendRedirect();
是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。

二者区别:

1.请求转发和重定向都可以实现访问一个资源时转向当前应用资源;
2.请求转发是一次请求一次响应,而重定向为两次请求两次响应;
3.一般情况下应该使用请求转发,减少浏览器对服务器的访问,减轻服务器压力;
4.请求转发地址栏没有变化,如果需要改变浏览器的地址栏或更改浏览器的刷新按钮的功能时需要使用重定向;
5.请求转发是在服务器端完成的,重定向是在客户端发生的;
6.请求转发的速度快,重定向速度慢;
7.请求转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成。

发布了100 篇原创文章 · 获赞 240 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zag666/article/details/103797421