区别转发与重定向

  1. 重定向
    重定向是指由原请求地址重新定位到某个新地址,原有的请求失效,客户端看到的是新的请求返回的响应结果,客户端浏览器的地址变为新的地址。
    页面请求转发:RequestDispatcher dispatcher=request.getRequestDispatcher(path).forward(request,response);

  2. 请求转发
    请求转发是指将请求再转发到其他地址,转发的过程中使用的是同一个请求,转发后地址栏不发生变化,可以用与servlet之传递数据使用。
    response.sendRedirect(path);
    response.sendRedirect()方法不仅可以重定向到当前应用程序中的资源,还可以重定向到同一个站点上的其他应用程序的资源,甚至是使用绝对url重定向到其他站点的资源。

  3. 区别
    转发是服务器行为,重定向是客户端行为
    (1)转发在服务器端完成的;重定向是在客户端完成的
    (2)转发的速度快;重定向速度慢
    (3)转发的是同一次请求;重定向是两次不同请求
    (4)转发不会执行转发后的代码;重定向会执行重定向之后的代码
    (5)转发地址栏没有变化;重定向地址栏有变化
    (6)转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
    (7)转发操作共享请求对象,重定向操作不能共享请求对象

  4. 请求转发与重定向的选择:
    优先选择请求转发,因为转发效率更高;由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载(刷新)当前页面,开始页面将会被重新调用。如果不想看到这样的情况,则选择转发。
    在同一Web应用程序的两个请求间传递数据时,在转发与重定向之间,只能通过转发实现。如果需要跳转到其它服务器上的资源,则必须使用重定向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值