请求转发和重定向

Request请求转发

请求转发(forward):一种在服务器内部的资源跳转方式。
过程描述:在这里插入图片描述
(1)浏览器发送请求给服务器,服务器中对应的资源A接收到请求
(2)资源A处理完请求后将请求发给资源B
(3)资源B处理完后将结果响应给浏览器
(4)请求从资源A到资源B的过程就叫请求转发

请求转发的实现方式:

req.getRequestDispatcher("资源B路径").forward(request,response)

请求转发的特点:

  • 浏览器地址栏路径不发生变化
  • 只能转发到当前服务器的内部资源,不能从一个服务器通过转发访问另一台服务器
  • 一次请求,可以在转发资源间使用request共享数据

Respones请求重定向

Response重定向(redirect):一种资源跳转方式。
过程描述:
在这里插入图片描述
(1)浏览器发送请求给服务器,服务器中对应的资源A接收到请求
(2)资源A现在无法处理该请求,就会给浏览器响应一个302的状态+location的一个访问资源B的路径
(3)浏览器接收到响应状态码为302就会重新发送请求到location对应的访问地址去访问资源B
(4)资源B接收到请求后进行处理并最终给浏览器响应结果,这整个过程就叫重定向

重定向的实现方式:

resp.setStatus(302);	//302为重定向状态码
resp.setHeader("location","资源B的访问路径");

其中request对象给我们提供了简化的编写方式为:

 resposne.sendRedirect("/重定向资源路径");	//一步到位

重定向的特点

  • 浏览器地址栏路径发送变化(当进行重定向访问的时候,由于是由浏览器发送的两次请求,所以地址会发生变化)。
  • 可以重定向到任何位置的资源(服务内容、外部均可)因为第一次响应结果中包含了浏览器下次要跳转的路径,所以这个路径是可以任意位置资源。
  • 两次请求,不能在多个资源使用request共享数据,因为浏览器发送了两次请求,是两个不同的request对象,就无法通过request对象进行共享数据。

请求转发和重定向的对比:

重定向的特点请求转发特点
浏览器的地址栏路径会发生变化浏览器的地址栏路径不会发生变化
可以重定向到任意位置的资源(服务器内部外部均可)只能转发到当前服务器的内部资源
两次请求,不能在多个资源使用request域对象共享数据一次请求,可以在转发的资源间使用request共享数据

注:至于以后到底用哪个,还是需要根据具体的业务来决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值