我是靠谱客的博主 长情冬瓜,最近开发中收集的这篇文章主要介绍转发与重定向的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转发(服务端行为)

request.getRequestDispatcher().forward(request,respond)
转发在服务器端发挥作用,通过forward()方法提交信息在多个页面之间进行传递。

转发的特点是:
1.地址栏不会改变
2.转发只能转发到当前Web应用内的资源
3.在转发过程中,可以将数据保存到request域对象当中去
4.转发只有一次请求
5.转发是服务器端行为

转发的过程:
1.客户端浏览器发送http
2.web浏览器接收请求
3.调用内部的一个方法在容器内部完成请求处理和转发工作

需注意的是:转发的路径必须是同一个web容器下的url。在客户端浏览器路径栏显示的仍然是第一次访问的路径。转发行为是浏览器只做了一次访问请求。

重定向(客户端行为)

resp.sendRedirect(" ")

重定向的特点:
1.重定向地址栏会改变
2.重定向可以跳转到当前web应用,甚至是外部域名的网站。
3.不能在重定向的过程中,将数据保存到request域对象中。

重定向的过程:
1.客户端浏览器发送http请求
2.web服务器接收后,发送302状态码响应,并且发送location给客户端服务器。
3.客户端服务器发现是302响应后,则自动发送一个http请求,请求url为重定向的地址,响应的服务器根据此请求寻找资源并发送给客户。

两者区别:

(1)请求转发是一次请求一次响应,而重定向是两次请求两次响应;

(2)请求转发地址栏不会改变,而重定向地址栏会显示第二次请求的地址;

(3)请求转发只能转发给本项目的其他资源,而重定向不仅可以重定向到本项目的其他资源, 还可以重定向到其他项目;

(4)请求转发是服务器端的行为,转发时只需要给出转发的资源路径即可,如Servlet的访问路径;而重定向需要给出全路径,即路径要包含项目名;

(5)请求转发比重定向的效率高,因为请求转发是一个请求。在以后的开发中,如果需要地址栏的地址发生改变,就选择重定向;如果需要在Servlet之间通过request域进行数据通信,就选择请求转发。

最后

以上就是长情冬瓜为你收集整理的转发与重定向的区别的全部内容,希望文章能够帮你解决转发与重定向的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部