请求转发(forward) 与 重定向(Redirect)的区别

请求转发(forward):request对象下的方法

    request.getRequestDispatcher(path).forward(request, response);

重定向(Redirect):response

    response.sendRedirect(path);


本质区别: 

1、请求的转发(forward)只发出了一次请求, 由浏览器发出一个quest到对应的Servlet中,在处理完成后,转发到别的Serlvet或者页面中继续处理,最后将这次的响应信息发给浏览器

2、重定向(Redirect)则发出了两次请求. 

    1)由浏览器发出一个quest到对应的Servlet中,在处理完成后,将这次的信息响应给浏览器。

    2)浏览器在接收到这次的响应后,按照响应提供的路径(path)再向该方向发起第二次Servlet重新处理。处理完成后,重新响  应给浏览器

forward的原理图:


Redirect的原理图:


具体区别:

①. 请求的转发: 地址栏是初次发出请求的地址.
     请求的重定向: 地址栏为最后响应的那个地址 
       
②. 请求转发: 在最终的 Servlet 中, request 对象和中转的那个 request 是同一个对象. 
     请求的重定向: 在最终的 Servlet 中, request 对象和中转的那个 request 不是同一个对象.       
   
③. 请求的转发: 只能转发给当前 WEB 应用的的资源
     请求的重定向: 可以重定向到任何资源. 
       
④. 请求的转发: / 代表的是当前 WEB 应用的根目录
     请求的重定向: / 代表的是当前 WEB 站点的根目录. 
阅读更多
个人分类: Servlet
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

请求转发(forward) 与 重定向(Redirect)的区别

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭