页面跳转的两种方式(转发和重定向)区别及应用场景分析

本文对比分析了页面跳转的两种方式——转发和重定向,包括它们的特点、区别、应用场景和优缺点。转发是服务器内部操作,地址栏路径不变,适合同服务器资源间的数据共享;重定向是客户端新请求,地址栏变化,适用于访问外部资源或避免重复操作。
摘要由CSDN通过智能技术生成

首先感谢原作者的辛辛苦苦编写的文章,可以帮助一个正在学习的小白。
目前没有自己心得,只是个知识的搬运工。防止原作者删除,我就复制下,存档以便后观看。
原作者1:liubin5620 原作者文章
原作者2:发呆程序员 原作者文章

自我总结简易版:

  • 重定向的特点:redirect (浏览器响应头:302,即重定向)
    1. 地址栏发生变化
    2. 重定向可以访问其他站点(服务器)的资源
    3. 重定向是两次请求。不能使用request对象来共享数据
    4. 请求来源不同:客户端浏览器发起,需要加虚拟目录,动态获取request.getContextPath()
  • 转发的特点:forward
    1. 转发地址栏路径不变
    2. 转发只能访问当前服务器下的资源
    3. 转发是一次请求,可以使用request对象来共享数据
      4.请求来源:服务器内部使用,不需要加虚拟目录。

重定向:
//动态获取虚拟目录
String contextPath = request.getContextPath();
//简单的重定向方法
response.sendRedirect(contextPath+"/被@WebServlet注解标注的类头上的请求内容");
转发:
request.getRequestDispatcher("/@WebServlet注解标注的类头上的请求内容").forward(request,response);

拓展: //设置状态码为302
response.setStatus(302);
//2.设置响应头location
response.setHeader(“location”,"/day15/responseDemo2");*/

作者1:
转发和重定向区别详解
作为一名程序员,特别是java web开发的程序员,在使用servlet/jsp的时候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发和重定向的区别。

  1、RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。、

  2、调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

  3、HttpServletRes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值