web---请求转发和重定向的区别

如图:左为forward的请求流程图,右为redirect的请求流程图

在这里插入图片描述

1. forward 是一次完整的请求和响应,是服务器内控制权的转发。可以由servlet接收请求,但把返回响应的权利通过forward给jsp来完成

2. redirect会在第一次响应返回时用状态码302和一个location头来告知浏览器,再发一个请求给location所指向的url地址,整个流程需要两次请求

3. 表现形式上: forward 转发浏览器地址栏地址总是第一个访问的servlet地址,转发地址对浏览器是隐藏的;而redirect,浏览器的地址栏地址是最后转发页面的目标地址,对浏览器可见。

4. forward 对应一次请求,因此可以利用request作用域传递信息;而 redirect 对应两次请求,只能使用session作用域或在重定向地址后面带参的方式来传递信息。(session只要在一个浏览器里即可,可以实现多次请求,forward只能实现一次请求)

5. redirect后的url可以是站外地址,这个特性常常用来与第三方应用做交互调用;而 forward 仅能做本站转发,不能访问站外资源。

猜你喜欢

转载自blog.csdn.net/qq_42689450/article/details/83043382