Java中转发和重定向再温习

在java中,跳转的实现方式有两种:请求转发和请求重定向,下面对其进行温故,看看能否知新。
在这里插入图片描述
在这里插入图片描述

1、定义

  • 请求转发:forward,发生在服务端程序内部,当服务端收到一个客户端的请求之后,会先将请求转发给目标地址,再将目标地址返回的结果转发给客户端。
    如:张三(客户端)找李四(服务端)借钱,而李四没钱,于是李四又去找王五借钱,并把借来的钱借给了张三。整个过程张三只借了一次钱,剩下的事情都是李四完成的,这就是请求转发。
  • 请求重定向:redirect,当服务端收到客户端的请求之后,会给客户端返回一个临时响应头,这个临时响应头中记录了客户端需要再次发送请求的url地址,客户端收到地址之后,会将请求发送到新的地址上。
    如:张三(客户端)找李四(服务端)借钱,而李四没钱,于是李四就告诉张三,我没钱,你去王五那借钱,于是张三又去王五那借钱,这就是请求重定向。

2、请求方式

  • 请求转发:是服务端的行为,服务端代替客户端发送请求,并将结果返回给客户端;
  • 请求重定向:是客户端的行为;

3、请求和响应

  • 请求转发:请求转发是服务端实现的,所以整个执行流程,客户端只需发送一次请求,因此整个只需流程使用的是同一个request和response;
  • 请求重定向:请求重定向是客户端发送两次完全不同的请求,所以两次请求中使用的request和response是不同的;

4、最终URL地址

  • 请求转发:是服务端代为请求,再将结果返回给客户端,所以请求的过程中URL地址是不变的;
  • 请求重定向:是服务端告诉客户端,再次请求的地址,所以浏览器会重新再发送一次请求,因此客户端最终显示的URL也是最终跳转的地址;

5、代码实现
在springboot中的代码实现

  • 请求转发:
@RequestMapping("/forward")
public void forward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getRequestDispatcher("/index.html").forward(request, response);
}
  • 请求重定向:
@RequestMapping("/redirect")
public void redirect(HttpServletRequest request, HttpServletResponse response) throws IOException {
    response.sendRedirect("/index.html");
}
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值