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

HTTP中的页面重定向和请求转发的区别

2017-08-23 10:57 211 查看
请求转发

借助于 RequestDispatcher对象的forword()方法进行跳转。

RequestDispatcher dispatcher = request.getRequestDispatcher("success.html");
dispatcher.forward(request, response);


特点:

页面跳转之后,地址栏没有跟着发生改变。

导致我们发现:地址栏的信息和显示的页面信息不符。

页面重定向

使用response对象调用sendRedirect()方法进行跳转。

response.sendRedirect("success.html");


特点:页面跳转后地址栏的信息 相应改变。

这两种跳转方式分别在什么情况下使用呢?【传送门

区别

请求转发是服务器行为,页面重定向是客户端行为。

转发过程:

① 客户浏览器发送http请求
② web服务器接受此请求
③ 调用内部的一个方法在容器内部完成请求处理和转发动作
④ 将目标资源发送给客户


在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

重定向过程:

① 客户浏览器发送http请求
② web服务器接受后发送302状态码响应及对应新的location给客户浏览器
③ 客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址
④ 服务器根据此请求寻找资源并发送给客户


在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

地址重定向使用一个response对象进行跳转,实际是客户端发送了两次response请求信息来完成一个跳转。

请求转发是由服务器端进行转发的,客户端根本不知道自己的请求经过了过多少个资源文件。

关于两种跳转方式的区别,点击【传送门
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: