一、目标不同
转发是服务器行为,重定向是客户端行为 。
二、请求次数不同
1、重定向是两次request 。
第一次,客户端request一个网址,服务器响应,并response回来,告诉浏览器,你应该去别一个网址。
2、请求转发只有一次请求
三、网址定位不同
重定向的网址可以是任何网址,请求转发只能是指定网址。
四、导致的结果不同
不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。
1、网站调整(如改变网页目录结构);
2、网页被移到一个新地址;
3、网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
参考资料:百度百科-重定向
重定向和请求转发的区别
1、重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向
2、重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址
3、转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变 ,转发是浏览器上的网址不变
4、重定向是两次request,转发只有一次请求
5、重定向时的网址可以是任何网址,转发的网址必须是本站点的网址
扩展资料:
网站重定向的注意事项
1.若准备将服务器上的文件移到其它地方时,须就以下信息正确地通知搜索引擎的爬行程序:
目标地址:这些文件被移向何方
移动属性:暂时移走还是永久性移走
2.对拥有多个域名的网站,专家建议应把那些不想在搜索引擎上推广的域名用301跳转命令来永久性重定向,确保网站实施了正确的301重定向。
参考资料:重定向-百度百科
请求转发和重定向的区别:
(一)、request.getRequestDispatcher()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;服务器内部转发,整个过程处于同一个请求当中。
response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。不在同一个请求。重定向,实际上客户端会向服务器端发送两个请求。
所以转发中数据的存取可以用request作用域:request.setAttribute(), request.getAttribute(),重定向是取不到request中的数据的。只能用session。
(二)、forward()更加高效,在可以满足需要时,尽量使用RequestDispatcher.forward()方法。
(三)、RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
(四)、重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。
扩展资料
关于重定向:
我们在网站建设中,时常会遇到需要网页重定向的情况:
1.网站调整(如改变网页目录结构);
2.网页被移到一个新地址;
3.网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。
参考链接 百度百科 重定向
本回答被网友采纳