您的位置:首页 > 理论基础 > 计算机网络

[置顶] [HTTP]转发和重定向的区别

2017-02-12 15:35 211 查看
一、调用方式
    众所周知,在servlet中调用转发、重定向的语句如下: 
request.getRequestDispatcher("new.jsp").forward(request,response);//转发到new.jsp
response.sendRedirect("new.jsp");//重定向到new.jsp    而在Jsp页面中实现转发和重定向的方式如下:
<jsp:forward page = "new.jsp"> //转发的new.jsp
<%response.sendRedirect("new.jsp");%> //重定向到new.jsp

二、基本流程1、转发过程:
    转发不会改变浏览器的地址;共享同一个request;只能在同一个web应用中使用。客户感觉不到服务器做了转发,转发行为是浏览器只做了一次访问请求(request)。转发是不会改变地址的,只是服务器内部的类方法调用而已。
                   


举个栗子:
   来个小故事,你看上了一个非常漂亮的妹子,每天打电话嘘寒问暖,可你不知妹子已有男友。终于有一天,妹子把自己的电话设置了呼叫转移。转移到了自己男友的手机号上。当你在打电话“骚扰”时,被她男友痛骂了一段。
   这里的“呼叫转移”就和转发特别像。首先你拨打的是妹子的电话,但你感觉不到你所拨打的电话已转移到了她男友手机号上。用计算机术语叫。你向妹子的手机号发送了一个请求,妹子将这个请求转发到自己男友手机号上。你只做了一次访问请求。所拨打的电话号码并没有改变
2、重定向:
   重定向会改变浏览器的地址栏;它不共享request;可以重定向到任意的URL。客户可以观察到地址栏的变化。相当于,客户端向服务器端发出多次请求。因此,重定向行为浏览器至少做了两次访问请求(request)。
                      


举个栗子:
      还是你看上了一个妹子,恰巧妹子的闺蜜是你的同学。你给妹子的闺蜜拨通了电话,经过一番苦口婆心,闺蜜终于把妹子的电话告诉了你,你挂断电话,鼓足勇气,拨打了妹子的电话。。。
一句话,转发是在服务器端发生的,重定向是在客户端发生的
转发和重定向比较:
        


三、应用场景:
    forward:访问Servlet处理业务逻辑,然后转发到Jsp显示处理结果,浏览器的URL不变。
    redirect:提交表单,处理成功后redirect到另一个jsp,防止表单重复提交。浏览器里的URL改变。(一般来说对于登陆、注册,现在网站都是用ajax提交。)
    (未登录CSDN的用户相对某篇博客进行评论,点击登录,成功登录之后重定向到之前的博客页码)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: