剖析转发和重定向

       

做JavaWeb开发一定会遇到转发和重定向这两个名字,刚开始确实有些模糊,感觉两者非常相似,但是随着研究深入发现两者的本质相差甚远。

 

首先看书写语句:


                   转发:request.getRequestDispatcher("apage.jsp").forward(request,response);//转发到apage.jsp

                               或者<jsp:forwardpage="apage.jsp" />(仅在jsp页面实现)


                   重定向:response.sendRedirect("apage.jsp");//重定向到apage.jsp


再看原理:

 

转发:

 

 

转发过程:


         客户浏览器发送http请求---web服务器接受此请求后调用内部的一个方法在容器内部完成请求处理和转发动作----将目标资源发送给客户。

        它只能在同一个web应用中使用,可以共享request范围内的数据。

 

重定向:

 

 

 

重定向过程:


         客户浏览器发送http请求---web服务器接收后响应要求客户浏览器发送一个新的http请求----客户端浏览器接受此响应后在发送一个新的http请求到服务器----服务器根据此请求寻找资源并发送给客户。

        它可以重定向到任意URL,不能共享request范围内的数据。

  

通过上面的原理就能看出两者本质上是非常有区别的,转发是和服务器有一次交互,服务器对请求在内部进行了“传递”,而重定向是和服务器有两次交互(甚至更多),服务器首先通过对请求的处理之后要求客户端在发送一个请求,之后完成“转向”。

 

最后总结一下两者的不同点:

 

转发:

     1.  不会改变浏览器的地址栏

     2.  共享一个请求

     3.  只能在同一个web应用中使用

重定向:

     1.  浏览器中地址栏改变

     2.  不共享请求

     3.  可以重定向到任意的URL

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值