一、转发和重定向的区别

request.getRequestDispatcher()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;服务器内部转发,整个过程处于同一个请求当中。response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。不在同一个请求。重定向,实际上客户端会向服务器端发送两个请求。
所以转发中数据的存取可以用request作用域:request.setAttribute(), request.getAttribute(),重定向是取不到request中的数据的。只能用session。

forward()更加高效,在可以满足需要时,尽量使用RequestDispatcher.forward()方法。

RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
        sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。

二、转发和重定向总结

1、转发使用的是getRequestDispatcher()方法;重定向使用的是sendRedirect();

2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;

3、转发是服务器行为,重定向是客户端行为;

4、转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;

5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)。

六、转发和重定向的选择

1、重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。

2、因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。

  3、另外,重定向还有一个应用场景:避免在用户重新加载页面时两次调用相同的动作。

参考链接:https://www.cnblogs.com/summary-2017/p/10661738.html

“转发和重定向”的区别以及选择相关推荐

  1. 转发与重定向的区别,特点

    为什么80%的码农都做不了架构师?>>>    重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求, 而浏览器将不会 ...

  2. java重定向的作用,java转发和重定向的区别

    重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送 ...

  3. 转发和重定向的区别?

    实际发生位置不同,地址栏不同 转发是发生在服务器的 转发是由服务器进行跳转的,细心的朋友会发现,在转发的时候,浏览器的地址栏是没有发生变化的,在我访问Servlet111的时候,即使跳转到了Servl ...

  4. java 根据客户端重定向_Java Web笔记 - 转发与重定向的区别与在FireBug客户端的表现...

    1.转发: RequestDispatcher的forward(request, response)称为请求转发. request的getRequestDispatcher和getRequestDis ...

  5. 请求转发与重定向的区别和执行流程

    请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...

  6. 转发和重定向的区别[来源于网络]

    转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题. 重定向:以前的request中存放的变量全部失效,并进入一个 ...

  7. 请求转发和重定向的区别以及什么时候使用

    请求转发和重定向的区别以及什么时候使用 转发过程(不改变网址) 客户浏览器发送http请求-->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作-->将 ...

  8. java零到一:Servlet和JSP-7:转发、重定向的区别 和状态管理

    1.转发和重定向的区别 请求对象和响应对象的作用域:请求对象到响应对象完成;         (1)转发所涉及的组件可以共享request,response           对象,而重定向不可以 ...

  9. Servlet转发和重定向的区别

    文章目录 前言 一.转发和重定向是什么? 二.两者者的区别 1.转发 2.重定向 总结 前言 主要是探究servlet跳转也面的两个方式转发和重定向的区别 一.转发和重定向是什么? 当我们在登录页面的 ...

最新文章

  1. 552. 学生出勤记录 II
  2. 想要写出好味道的代码,你需要养成这些好习惯!
  3. MP-Ukagaka伪春菜插件扩展:在对话框用iframe显示链接
  4. dnf如何快速拾取物品_极简断舍离|如何快速处理闲置物品?
  5. (Unity4.7)assetbundle 坑爹总结
  6. 使用phonegap,进行页面跳转
  7. cknife连接失败
  8. ds18b20数字温度传感器特点及使用介绍
  9. 【你们项目组有几个测试,你负责什么,迭代了几个版本,迭代周期,写了多少测试用例?】
  10. 图像处理之图像直方图
  11. PTA 乙级 【1007】素数对猜想
  12. 电池SOC仿真系列-基于双卡尔曼滤波算法的电池SOC估算研究
  13. Tomcat8.5后版本不返回200 OK的问题解决
  14. 小米手机刷机工具MiFlash怎么用
  15. Autovue 问答
  16. wpsa4排版_wps排版(wps如何一键排版)
  17. 电脑副业能做什么?一台电脑能做的副业
  18. 如何制作企业在线产品手册?这里有一些简单的方法!
  19. Netstat命令使用方法
  20. linux 第二十天 linuxprobe

热门文章

  1. Matplotlib 图例指南
  2. Promethus(普罗米修斯)监控随笔
  3. 订单系统设计 --- 交易快照
  4. 强制更改windows电脑密码
  5. 拯救pandas计划(16)——将DataFrame的奇偶列位置进行前后对调
  6. Remote Sensing期刊论文接收时间过程
  7. 驾考科目1 非口诀 记忆知识点
  8. wifi udp android,Android开启热点进行UDP通信中的坑
  9. PHP 获取 IP 地址所在的地理位置信息/城市
  10. dom4j修改带有命名空间的xml文件