转发与重定向

本文详细介绍了HTTP的请求转发和重定向的区别与实现方式。请求转发在服务器内部完成,保持URL不变,适合携带数据;重定向由浏览器发起新的请求,URL改变,适用于不同Web应用间的跳转。此外,还提到了定时刷新作为另一种重定向形式,用于设定延迟跳转。
摘要由CSDN通过智能技术生成

对于转发与重定向有时候傻傻分不清楚,那么我们就来说说转发与重定向

一.请求转发(forward)

  • 所谓请求转发其实就是将请求从一个资源中转发(转交)给另外一个资源, 让另外一个资源对请求进行响应
    我们用生活中的例子来说:比如我们找人借钱,月末了资金有点短缺,于是便找小王借钱,然而他也没钱了,他就找去小明借钱,接完之后便借给我
    在这里插入图片描述
    从图及其说明我们发现:
    转发的特点
    (0)转发属于服务器内部的跳转, 对浏览器是不可见的!
    (1)整个转发前后属于一次请求,一次响应
    (2)转发前后地址栏地址不会发生变化
    (3)转发前后的两个资源只能属于同一个Web应用, 否则无法进行转发!
  • 实现请求转发:
request.getRequestDispatcher(“所转发到资源的路径”).forward(request, response);

  • request域对象
    所谓域对象就是如果一个对象具有可以被访问的范围, 利用该对象上的map集合, 在这个范围内, 可以实现数据的共享
    Request提供了存取数据的方法:
    – 往request域中添加一个属性
request.setAttribute(String name, Object value);

– 通过属性名获取request域中对应的属性值

request.getAttribute(String name);
  • 请求转发和域对象经常配合着使用,实现从Servlet中带数据到JSP进行显示
  • 在这里插入图片描述
    Request域对象的三大特征:
    (1)生命周期: 服务器接收到请求后,以及在调用service处理请求前创建request对象, 一次请求结束后, 销毁request.
    (2)作用范围: 一次请求中
    (3)主要功能: 和请求转发配合使用, 实现从Servlet带数据到JSP.

二.重定向(redirect)

  • 所谓重定向也是资源的一种跳转方式,但是与请求转发不同,重定向是浏览器发送请求到一个资源,这个资源返回一个状态码到浏览器,告诉它重新请求另一个资源
    还是拿生活的例子来说明:还是借钱,我找小王借钱,他也没钱了,他告诉我小明有钱,并告诉我他在哪,我便重新去找小明借钱
    在这里插入图片描述
    从图上和说明上可知:

  • 重定向的特点:
    (1)重定向是两次请求, 两次响应
    (2)重定向前后地址栏地址会发生变化
    (3)重定向前后的两个资源可以是不同的Web应用或者位于不同的虚拟主机.

  • 实现代码:

response.sendRedirect(“重定向到资源的地址”);
  • 利用重定向实现定时刷新
    通过Refresh响应头, 在多少秒之后跳转到指定的地址
    比如:在注册成功后, 会提示xx秒之后跳转到首页, 这里就可以通过定时刷新来实现!!
    定时刷新代码:
Response.setHeader(“Refresh”, “5;url=/day08_reqres/test.jsp”)

定时刷新的特点:
(1)定时刷新是两次请求, 两次响应
(2)定时刷新前后地址栏地址会发生变化
(3)定时刷新前后的两个资源可以是不同的Web应用或者位于不同的虚拟主机.
(4)重定向在第一次响应结束之后和第二次发送请求之间, 中间没有时间间隔, 是立即跳转; 定时刷新是在隔多少秒之后再立即跳转.

小结:

(1)如果在跳转前后, 需要带数据到目的地, 此时请使用转发
(2)如果在跳转前后, 不希望地址栏地址发生变化, 此时请使用转发
(3)如果在跳转前后, 希望地址栏地址发生变化, 此时请使用重定向或者定时刷新
(4)如果在跳转之前, 需要间隔多少秒之后再进行跳转, 此时请使用定时刷新

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值