“转发和重定向”的区别以及选择
一、转发和重定向的区别
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
“转发和重定向”的区别以及选择相关推荐
- 转发与重定向的区别,特点
为什么80%的码农都做不了架构师?>>> 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求, 而浏览器将不会 ...
- java重定向的作用,java转发和重定向的区别
重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送 ...
- 转发和重定向的区别?
实际发生位置不同,地址栏不同 转发是发生在服务器的 转发是由服务器进行跳转的,细心的朋友会发现,在转发的时候,浏览器的地址栏是没有发生变化的,在我访问Servlet111的时候,即使跳转到了Servl ...
- java 根据客户端重定向_Java Web笔记 - 转发与重定向的区别与在FireBug客户端的表现...
1.转发: RequestDispatcher的forward(request, response)称为请求转发. request的getRequestDispatcher和getRequestDis ...
- 请求转发与重定向的区别和执行流程
请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...
- 转发和重定向的区别[来源于网络]
转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题. 重定向:以前的request中存放的变量全部失效,并进入一个 ...
- 请求转发和重定向的区别以及什么时候使用
请求转发和重定向的区别以及什么时候使用 转发过程(不改变网址) 客户浏览器发送http请求-->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作-->将 ...
- java零到一:Servlet和JSP-7:转发、重定向的区别 和状态管理
1.转发和重定向的区别 请求对象和响应对象的作用域:请求对象到响应对象完成; (1)转发所涉及的组件可以共享request,response 对象,而重定向不可以 ...
- Servlet转发和重定向的区别
文章目录 前言 一.转发和重定向是什么? 二.两者者的区别 1.转发 2.重定向 总结 前言 主要是探究servlet跳转也面的两个方式转发和重定向的区别 一.转发和重定向是什么? 当我们在登录页面的 ...
最新文章
- 552. 学生出勤记录 II
- 想要写出好味道的代码,你需要养成这些好习惯!
- MP-Ukagaka伪春菜插件扩展:在对话框用iframe显示链接
- dnf如何快速拾取物品_极简断舍离|如何快速处理闲置物品?
- (Unity4.7)assetbundle 坑爹总结
- 使用phonegap,进行页面跳转
- cknife连接失败
- ds18b20数字温度传感器特点及使用介绍
- 【你们项目组有几个测试,你负责什么,迭代了几个版本,迭代周期,写了多少测试用例?】
- 图像处理之图像直方图
- PTA 乙级 【1007】素数对猜想
- 电池SOC仿真系列-基于双卡尔曼滤波算法的电池SOC估算研究
- Tomcat8.5后版本不返回200 OK的问题解决
- 小米手机刷机工具MiFlash怎么用
- Autovue 问答
- wpsa4排版_wps排版(wps如何一键排版)
- 电脑副业能做什么?一台电脑能做的副业
- 如何制作企业在线产品手册?这里有一些简单的方法!
- Netstat命令使用方法
- linux 第二十天 linuxprobe