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

一、特点
1. 重定向的特点 (客户端行为)

response.sendRedirect(“路径”)
a. 地址栏发生改变
b、重定向可以访问其他站点(服务器)的资源
c、重定向是两次请求。不能使用request对象来共享数据

2. 转发的特点 (服务器端行为)

request.getRequestDispatcher(“路径”).forward(request,response)
a. 转发的地址栏路径不变
b. 转发只能访问当前服务器下的资源
c. 转发是一次请求。可以使用request对象来共享数据

二、不同点

通过了解两者的特点之后,我们可以发现两者重要的不同:

  1. 当使用转发时,jsp使用一个内部的方法来调用目标页面,新的页面同时处理同一个请求,而浏览器不知道这个过程。所以之前在request域中存放的对象仍然可以使用,相当于将两个页面拼在了一起。
  2. 当使用重定向时,浏览器 url 会变成新页面的 url,浏览器又发送了一次请求,所以速度会比转发慢,并且产生新的请求之后,request域中的对象也将无法使用。

通过二者的不同点可以简单的理解为:
如果你需要找一班的张三

重定向 :你先来到了二班,二班的人说:张三是一班的,然后你就从二班出来,去了一班找到了张三
转发:你先来到了二班,二班的人自己去一班把张三带到你的面前,而你还是以为张三在二班

三、用法
  1. 因为转发速度快,并且能保存request域中的对象,所以当没有特殊需求时,应优先选择转发
  2. 如果需要在两个页面之间传递变量时,应使用转发,如果使用session作用域,会增大变量的作用域
  3. 转发面向的只是当前服务器内部的资源,如果需要访问外部站点,则使用重定向
  4. 如果需要对数据进行增删改查,应该使用重定向,因为如果使用转发,操作前后的地址栏不发生改变,如果对页面进行刷新的话,就会重新执行之前的操作,造成数据二次改动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值