转发和重定向的路径问题(重点)

1)使用相对路径在重定向和转发中没有区别
2)重定向和请求转发使用绝对路径时,根/路径代表了不同含义
重定向response.sendRedirect(“xxx”)是服务器向客户端发送一个请求头信息,由客户端再请求一次服务器。**/指的Tomcat的根目录,写绝对路径应该写成"/当前Web程序根名称/资源名" 。**如"/WebModule/login.jsp","/bbs/servlet/LoginServlet"
**转发是在服务器内部进行的,写绝对路径/开头指的是当前的Web应用程序。**绝对路径写法就是"/login.jsp"或"/servlet/LoginServlet"。

总结:以上要注意是区分是从服务器外的请求,还在是内部转发,从服务器外的请求,从Tomcat根写起(就是要包括当前Web的根);是服务器内部的转发,很简单了,因为在当前服务器内,/写起指的就是当前Web的根目录。

页面跳转的两种方式(转发和重定向)区别详解:

转载自一个很详细的博主

在使用servlet/jsp的时候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发和重定向的区别。

举个例子:HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的 访问请求,这个过程好比有个绰号叫“浏览器”的人写信找张三借钱,张三回信说没有钱,让“浏览器”去找李四借,并将李四现在的通信地址告诉给了“浏览器”。于是,“浏览器”又按张三提供通信地址给李四写信借钱,李四收到信后就把钱汇给了“浏览器”。可见,“浏览器”一共发出了两封信和收到了两次回复, “浏览器”也知道他借到的钱出自李四之手。RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。这个过程好比绰号叫“浏览器”的人写信找张三借钱,张三没有钱,于是张三找李四借了一些钱,甚至还可以加上自己的一些钱,然后再将这些钱汇给了“浏览器”。可见,“浏览器”只发 出了一封信和收到了一次回复,他只知道从张三那里借到了钱,并不知道有一部分钱出自李四之手。

两种跳转获得对象的方式

//获得转发对象getRequestDispatcher()
HttpServletRequest(httpServletRequest).getRequestDispatcher
ServletContext.getRequestDispatcher();//获得重定向对象sendRedirect()
HttpServletResponse(httpServletResponse).sendRedirect();

转发和跳转的小结

1. 转发时使用相对路径,重定向时即可使用相对路径也可使用绝对路径

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

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

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

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

转发和重定向的选择

  1、重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。2、因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。

转发和重定向的应用场景

在上面我已经提到了,转发是要比重定向快,因为重定向需要经过客户端,而转发没有。有时候,采用重定向会更好,若需要重定向到另外一个外部网站,则无法使用转发。另外,重定向还有一个应用场景:避免在用户重新加载页面时两次调用相同的动作。

   例如,当提交产品表单的时候,执行保存的方法将会被调用,并执行相应的动作;这在一个真实的应用程序中,很有可能将表单中的所有产品信息加入到数据库中。但是如果在提交表单后,重新加载页面,执行保存的方法就很有可能再次被调用。同样的产品信息就将可能再次被添加,为了避免这种情况,提交表单后,你可以将用户重定向到一个不同的页面,这样的话,这个网页任意重新加载都没有副作用;

页面跳转的两种方式(转发和重定向)区别详解:相关推荐

  1. JavaWeb,使用servlet/jsp时页面跳转的两种方式:转发和重定向

    一.两种跳转获得对象的方式 1️⃣获得转发对象getRequestDispatcher() httpServletRequest.getRequestDispatcherServletContext. ...

  2. 页面跳转的两种方式-重定向和转发的区别(详细)

    文章目录 一.介绍 二.调用方式 三.小结 四.转发和重定向的选择 一.介绍 1.实现 转发:用request的getRequestDispatcher()方法得到ReuqestDispatcher对 ...

  3. vue 页面跳转的两种方式

    1,标签跳转     <router-link to='two.html'><button>点我到第二个页面</button></router-link> ...

  4. android数据回传多个页面_Android菜鸟起飞|使用Intent实现Activity跳转的两种方式(无回传数据和有回传数据)...

    使用Intent实现Activity跳转的两种方式 1. 使用startActivity(intnet)方法实现无回传数据的Activity跳转: 使用方法: 为实现跳转动作的控件绑定监听器,在点击事 ...

  5. java中跳转页面的两种方法_页面跳转的几种方式

    页面跳转的几种方式: --------------(网络收藏) http头实现页面跳转: out.println(""); content是指跳转的时间间隔,单位为秒 ------ ...

  6. html js页面跳转的几种方式

    页面跳转的几种方式 一:js的跳转 1.直接跳转:window.location.href <script language="javascript" type=" ...

  7. 实现前端页面跳转的几种方式

    实现前端页面跳转的几种方式 推荐使用 <script language='javascript'> document.location =   'http://mail.qq.com/do ...

  8. js代码中实现页面跳转的几种方式

    js代码中实现页面跳转的几种方式 注:jquery的$.get(),$.post(),$.ajax()都不会使页面发送跳转,因为其本质都是ajax请求. 第一种: <script languag ...

  9. Java连接Oracle两种方式thin与oci区别

    Java连接Oracle两种方式thin与oci区别 前几天同事跑过来跟我说, 机房中的一台tomcat服务器跟oracle数据库机连接很慢,查看控制台中的hibernate日志, 基本上是一条sql ...

  10. php两种基本的输出方及实例详解

    在本篇文章里小编给大家整理了一篇关于php两种基本的输出方及实例详解内容,有需要的朋友们可以跟着学习参考下. 在 PHP 中,有两种基本的输出方法:echo 和 print. echo 和 print ...

最新文章

  1. 老婆给当程序员的老公打电话:今天下班顺路买斤元宵……
  2. 人大附中「内卷」到了美国?华裔家长抗议中国学生持F1签证抢占美国IMO名额...
  3. Redis集群技术及Codis实践
  4. 超过200m文件发送_微信支持发送大文件了,高清视频不再压缩
  5. 红黄蓝收购新加坡某民营儿童教育集团,宣布更名为GEH Education...
  6. namespace-C#命名空间
  7. 浅析 PHP 中的 Generator
  8. jQuery 常用的方法
  9. c语言 l l next,nexttowardl
  10. 计算机网络 —— 总结(面试问题)
  11. Virtual DOM(虚拟dom-2)
  12. iOS开发UIAlertController之UIAlertAction加图片(UIAlertController按钮加图片)
  13. 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
  14. 基于Paddlehub与Wechaty的微信小助手--懂懂
  15. 处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot)
  16. Bellman_Ford模版
  17. 拟杆菌预防肺炎克雷伯菌定殖和传播
  18. 《C语言程序设计(第五版)》习题答案
  19. 安装archlinux+cinnamon笔记
  20. Windows时钟同步问题

热门文章

  1. 【解决方案】关于自动生成表hibernate_sequence的问题
  2. java项目笔记 - 第16章:坦克大战1.0
  3. 云队友丨任正非内部演讲:星光不问赶路人
  4. rootkit后门程序开发测试过程
  5. css轻松写出梦幻西游动画效果
  6. python 道生一,一生二,二生三,三生万物
  7. 小程序向webview传参_h5与小程序互相跳转,传参和获取参数
  8. Android应用: 3D旋转球
  9. 得益乳业 × 奇点云 | 在线化业务GMV增长9倍是怎样炼成的?
  10. 为何淘宝上的假货打不完?