JSP基础:三、重定向,转发详解

 页面跳转的方式:
 重定向,转发
 response.sendRedirect(地址)被称为重定向,地址栏会改变
 request.getRequestDispatcher(地址).forward(request,response)称为转发,地址栏不会变化
 它们两个的功能都是实现页面跳转,而差别是
 
 重定向不会共享同一个请求对象,并且地址栏会改变
 转发会共享同一个请求对象(包括数据),地址栏不会变化
 
 重定向
 请求A.jsp页面,那么A页面获得请求执行了重定向操作,也就是response.sendRedirect("B.jsp")
 表示页面跳转到B.jsp
 而事实上这个重定向并不是马上响应B.jsp页面给客户浏览器,而是返回了这个B.jsp的地址给客户浏览器
 客户浏览器得到这个地址后进行了第二次请求,才获得B.jsp的实际页面
 正因为是二次请求(第一次请求的是A,第二次请求的是B),所以地址栏会及时更新为最后一次请求的地址,并且两次请求两个请求对象
 自然不共享数据
 
 转发
 请求A.jsp页面,那么A页面获得请求执行了转发操作,也就是request.getRequestDispatcher("B.jsp").forward(request,response)
 表示前往B.jsp页面
 而事实上服务器确实会在A页面的代码执行完毕后继续调用B页面继续处理,而B页面中的request和response对象是从A页面传递过来的,是同一个
 B页面处理完毕后会响应B页面给客户浏览器
 而在整个过程中,我们仅发出一个请求(请求A.jsp页面),而A页面到B页面的操作是服务器完成的,客户浏览器毫不知情,所以地址栏不会有任何变化
 所以最后变成了我们现在看到的地址和页面不匹配的情况
 
 转发和重定向各有特点,一般来说:
 传递数据用转发
 其他情况用重定向
 但是也有的时候会有例外,这个例外遇到再说
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值