forward(转发) 和 redirect(重定向) 区别

1.重定向(redirect)

首先重定向是客户端的重定向,它是有,是完全的界面跳转。过程如下(结合下图):

首先浏览器发送给服务器A一条请求,想要获取服务器上的资源,但是服务器A上没有,此时它返回给浏览器一个状态码为302和含有浏览器所需资源的服务器B的地址一并返回给浏览器,有了302这个状态码,浏览器会发送请求给服务器B。
在这里插入图片描述
代码原理:

方式1//        resp.setStatus(302);
//        resp.setHeader("location","/day15/responseDemo2");

方式2:
        resp.sendRedirect("/day15/responseDemo2");
2.forward(转发)

转发是作用于服务器端的,首先浏览器向服务器发送了一个请求,服务器收到此请求后,其中此服务器上的一个Servlet没有此浏览器想要的资源,需要转发到此浏览器的另一个Servlet,如下图:Aservlet与Bservlet(如果不知道servlet是什么,本人的上一篇博客有着详细的讲解),
在这里插入图片描述

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/requestDemo9");
        requestDispatcher.forward(request,response);
3.总结:

通过上述的两个示例我们总结出如下几点
1.redirect是作用在客户端的,forward是作用在服务器端的
2. redirect可以访问其他站点(服务器)的资源,forward只能访问当前服务器下的资源
3. redirect是两次请求。不能使用request对象来共享数据,forward是一次请求,可以使用request对象来共享数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值