关于重定向和请求转发

代码:
response.sendRedirect(“login.html”); //重定向
request.getRequestDispatcher(“login.html”).forward(request,response); //请求转发

在学习servlet过程中如果要实现页面跳转,可以用重定向和请求转发,两种方式都可以实现页面的跳转,那么他们的区别是什么?

重定向时,客户端向服务端发送一次请求,服务端返回给客户端一个响应头302状态码(found),以及跳转的地址,客户端根据服务端返回的这个地址继续发送一次请求,跳转到对应的页面,客户端在这个过程中执行了两次请求

请求转发时,客户端向服务端发送一次请求,服务端返回给客户端一个200状态码(请求成功),并且服务器内部帮助客户端进行页面的跳转,不需要客户端去实现跳转,客户端在这个过程中之执行了一次请求

相比较之下,如果效率高的则是请求转发,因为只发送了一次请求。但是请求转发只能跳转到服务器中自己项目下的网页地址,而重定向则没有限制,并且由于是两次请求,重定向没办法使用上一次request存储的数据,因为做了两次不同的请求.

简单的理解重定向相当于去小卖部买可乐,小卖部卖完了,老板让你自己去隔壁或者其他店铺买这就是重定向,因此URL地址栏最后显示的是请求的页面地址(你去的另外一家店铺低点)

请求转发相当于去小卖部,老板告诉你可乐卖完了,但是老板比较热心帮你去了其他店铺买来给你,你最后完成交易的地点还是在老板的小卖部,因此URL地址栏最后显示的是你请求的Servlet的地址(老板的小卖部地址).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值