1.转发(转向)和重定向图解
图:转发(转向)
图:重定向
2.例子
转发:A找B要钱,B没钱,于是B向C借钱,然后将钱给A。
重定向:A找B要钱,B没钱,于是B将C的联系方式告诉A,然后A再向C借钱。
3.区别
- 本质区别
转发是服务器行为,重定向是浏览器行为。 - 地址栏显示
转发是服务器请求资源,所以浏览器不知道,只是最后服务器返回给浏览器相对应的内容。
重定向是服务器告诉浏览器最终的资源地址,所以当浏览器发起第二次请求的时候,也就是向最终的资源发起请求的时候,地址栏显示为最终的资源地址。 - Servlet中
转发:
request.getRequestDispatcher("new.jsp").forward(request, response); //转发到new.jsp
重定向
response.sendRedirect("new.jsp"); //重定向到new.jsp
-
转发是服务器跳转,重定向是浏览器跳转
(1)服务器端跳转时,未超出request的属性范围,request属性能够保存到跳转页;客户端跳转时,则超出了request的属性范围,无法进行其属性的传递。
(2)服务器端跳转时,JSP执行到跳转语句时会立刻进行跳转,不再执行之后的代码;客户端跳转时,则会在整个页面的代码执行完后,才执行跳转。所以在执行服务器端跳转时,一定要在跳转语句之前释放掉临界资源(如数据库连接,I\O流操作等)。 -
跳转的资源范围
转发只能装发到web应用的内部资源;重定向可以是任何资源例如重定向到谷歌 -
地址/
转发中的地址“/”是web应用的根目录;重定向的地址“/”是站点根目录。
(web应用的根目录指定是项目里的webcontent下的目录,站点根目录指的是http://localhost:8080/后的目录) -
表单里面的action和a中的href
是重定向。 -
JavaScript 实现页面跳转重定向可以使用以下两种方法(⭐⭐⭐⭐⭐):
window.location.replace(“url”) 类似 HTTP 重定向
window.location.href=“url” 类似点击 a 标签的链接。