请求重定向和请求转发的区别

本文详细解析了请求转发和请求重定向的概念及其工作原理,强调了二者在客户端行为、服务器行为上的区别,以及在URL地址变化上的差异,为开发者提供了清晰的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从含义上来讲

  • 请求重定向:从名字中可以看出来他的主要作用,对url重新定向,是一种客户端的行为,response.sendRedirect( ) 从本质上来将等于两次请求,前一次请求url对象不会保存,地址栏的URL地址会改变。(客户端跳转时用HttPservletResopse对象的sendRedirect函数实现)

  • 请求转发:是一种服务器的行为,request.getRequestDispatcher().forward(request,response),是一次请求,转发后对象会保存下来,地址栏的URL地址不会改变。(服务器端跳转是使用RequestDispather对象的forward方法实现的)

区别

  1. 使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,而是用客户端跳转时,地址栏当中会显示目标资源的URL;

  2. 服务器端跳转是由客户端发送一个请求,请求一个服务器资源——如JSP和Servlet——,这个资源又将请求转到另一个服务器资源,然后再给客户端发送一个响应,也就是说服务器端跳转是客户端发送一次请求,服务器端给出一次响应;

  3. 客户端跳转的流程则不同。客户端同样是发送一个请求给服务器端资源,这个服务器资源会首先给客户端一个响应,客户端再根据这个响应当中所包含的地址,再次向服务器端发送一个请求,也就是说客户端跳转是两次请求,两次响应;(客户端请求到达服务端,服务端返回一个 “去访问其他链接” 的回应,客户端依此回应,第二次去访问。所以:1.客户端根据回应地址又跳转了一次,2.第二次跳转后,已经出了request的属性范围)

  4. 在进行客户端跳转和服务器端跳转时,都需要指定目标资源的URL,如果这个路径以“”开始。在客户端跳转当中“”代表的是应用服务器根目录,而在服务器端跳转当中代表的是应用程序根目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值