页面跳转之Forward和Redirect

        在实现网城项目中,主讲老师把访问首页的index.action在地址栏里改成了index.jsp,然后他用到了一个forward方法。

        它是在index.jsp中这么实现的,就加了一个<jsp:forward page="index.action"/>,并且把一些其他的无关元素都删了。当时对这个做法感到很新奇,于是就查了查,总结了一下,给大家分享。

        他们有以下几点区别:

        1、实现机制

        Forward是直接转发方式,也就是比较普通的请求转发。它是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。它实现的RequestDispatcher类的forward()方法。

        Redirect是间接转发方式,也叫重定向,它一般用于避免用户的非正常访问。是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL。它实现的是HttpServletRequest类的SendRedirect()方法。

       例如:用户在没有登录的情况下访问后台资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。在Servlet中,通过调用Response对象的SendRedirect()方法,告诉浏览器重定向访问指定的URL。在项目的“提交订单”模块用有用到,如果提交时未登录,会转到登录页面。

        2、数据共享

        forward:转发页面和转发到的页面可以共享request里面的数据,而redirect方式实现的则不能共享数据。

        3、运用场景

        forward:一般用于用户登陆的时候,根据角色转发到相应的模块。redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

        4、执行效率 

        Forward执行效率比较高,它只执行了一次HTTP请求。而Redirect执行效率低,因为它实际上执行了两次HTTP请求,对应了两个request对象。

       

        小结:其实从本质上来讲,他们最大的不同还是实现机制和目的上的区别,这两个页面跳转形式其实还是很好理解和区分的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值