【Java面试题】sendRedirect()重定向和forward()转发有什么区别?

前言

在Servlet中有forward()方法,response对象有sendRedirect()方法,但是其实在JSP的内置对象中也有这两个对象,因此不管在Servlet或者JSP中其实他们的区别是一样的,只是JSP第一步需要翻译成Servlet。

区别

  • 如下图所示为forward方法的过程:首先浏览器向服务器发送请求,当在使用forward方法的时候是将请求发给另外一个servlet让他来处理,之后将第二个servlet的结果返回给客户端。因此容易知道在浏览器中,用户的地址栏仍然是第一次请求的地址,不会发生改变。forward是服务器内部的转发,在整个过程中使用的是同一个Request,因此forward()方法会将Request的信息带到并定向的Servlet中去,调用该方法的过程是Request.getRequestDispatcher(path).forward(request, response);
    在这里插入图片描述
  • 如下图所示是sendRedirect的过程:首先客户端向一个servlet发送请求,在这个servlet中Response对象调用了sendRedirect()方法,response.sendRedirect(path);这样就告诉了浏览器新的地址,浏览器根据新的地址再次发送一个请求,因此浏览器中出现的是第二次发送请求的地址,正因为这种方式比forward()方法多了一次请求因此其效率要低一些。
    在这里插入图片描述

小结

forward能满足条件的,就用forward,但是有时候需要去其他服务器上面获取资源就不得不使用redirect啦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值