javascript - 重定向和转发的区别
伊谢尔伦
伊谢尔伦 2017-04-11 11:58:19
[JavaScript讨论组]

本人在做一个链接跳转(跳转到外站) 这个跳转要求绝对不能卡 但是困惑究竟是用重定向还是转发 转发更稳定吗 如果是转发 又好像有很多代码 从百度找到两个代码都说是第二种更快 那会不会还有其他更快更稳定的代码呢 如果有的话也一并回复吧谢谢
代码一:










代码二:

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
大家讲道理

请求转发:A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己完成不了,于是B请C帮忙,C接收到B的请求后最终完成了该项工作,并把最后的结果返回给A。此过程A只发送了一次请求给B,A只知道把请求发给B,至于B是怎么完成的A并不关心,他只等待最终的结果。
重定向:A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己无法完成,就立即告诉A情况,并向A推荐C可以完成该项工作,于是A就找C帮忙,C最终完成该项工作,返回给A。

不同点:
1、浏览器地址栏显示不同(表面区别):
无论进行多少次请求,如果使用请求转发来实现,浏览器地址栏中只显示第一次发送请求的地址;
如果使用重定向来实现,浏览器地址栏显示的是每次请求的新地址。这只是表面上看到的不同地方。

2、组件之间可否共享信息不同(本质区别)
从本质上讲,请求转发时,从发送第一次到最后一次请求的过程中,WEB容器只创建一次request和response对象,请求之间始终共享这两个对象,所以每个请求可以访问他之前请求中的参数和属性的值;
而重定向时,浏览器每发送一次请求,WEB容器都会重新创建新的request和response对象,所以请求之间不能共享信息,即不能在请求中访问到他之前请求中的参数和属性的值。

3、实现方式不同:
3.1 请求转发的实现步骤:
1)说明将要转发的资源;
2)获取请求转发的对象;
3) 调用请求转发对象中forward()方法
Java代码
1). String forward = "/a.jsp";
2). RequestDispatcher rd = request.getRequestDispatcher(forward);
3). rd.forward(request, reponse);
综合:request.getRequestDispatcher("/a.jsp").forward(request,response);

3.2 重定向的实现步骤:
1) 说明将要重定向的资源;
2) 调用response对象中sendRedirect方法
Java代码

  1. String resource = request.geContextPath() + "/a.jsp";

  2. response.sendRedirect(resource);
    综合:response.sendRediect(request.geContextPath() + "/a.jsp");

4、知情人不同
请求转发的过程只有WEB服务器知道,而浏览器不知道进行了多少次转发,以及都转发给哪些组件(servlet,JSP),它只是在等待WEB服务器最终的结果。
而重定向时,每发送一次请求,WEB服务器都会通知浏览器的,所以重定向了几次请求以及每次都向哪个组件发送的请求,浏览器很清楚,当让WEB服务器也很明白。

相同点: 两者都可以进行多次请求的转发。

原文网址:http://blog.sina.com.cn/s/blo...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号