一、目标不同

转发是服务器行为,重定向是客户端行为 。

二、请求次数不同

1、重定向是两次request 。

第一次,客户端request一个网址,服务器响应,并response回来,告诉浏览器,你应该去别一个网址。

2、请求转发只有一次请求

三、网址定位不同

重定向的网址可以是任何网址,请求转发只能是指定网址。

四、导致的结果不同

不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

1、网站调整(如改变网页目录结构);

2、网页被移到一个新地址;

3、网页扩展名改变(如应用需要把.php改成.Html或.shtml)。

转发和重定向的图解

两种跳转获得对象的方式

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

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

  2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;3、转发是服务器行为,重定向是客户端行为;4、转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)。

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

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

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

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

但是,使用重定向不太方便的地方是,使用它无法将值轻松地传递给目标页面。而采用转发,则可以简单地将属性添加到Model,使得目标视图可以轻松访问。由于重定向经过客户端,所以Model中的一切都会在重定向时丢失。但幸运的是,在Spring3.1版本以后,我们可以通过Flash属性,解决重定向时传值丢失的问题。

要使用Flash属性,必须在Spring MVC的配置文件中添加一个。然后,还必须再方法上添加一个新的参数类型:org.springframework.web.servlet.mvc.support.RedirectAttributes。

   如下所示:
@RequestMapping(value="saveProduct",method=RequestMethod.POST)
public String saveProduct(ProductForm productForm,RedirectAttributes redirectAttributes){//执行产品保存的业务逻辑等//传递参数redirectAttributes.addFlashAttribute("message","The product is saved successfully");//执行重定向return "redirect:/……";

例子:
response.sendRedirect(“loginsuccess.jsp”);
例子:
  RequestDispatcher dis=request.getRequestDispatcher(“loginsuccess.jsp”);
   dis.forward(request,response);

请问重定向与请求转发有什么区别?相关推荐

  1. 请求转发和重定向的区别_WEB之重定向和请求转发的区别

    一次重定向的过程 我的代码里面已经写好了,redirectAndFoward.jsp页面上有一个表单,表单重定向到redirectAndFowardTarget.jsp,那么这一次的重定向过程为: 1 ...

  2. JSP中的重定向和请求转发以及它们的区别

    我们先硬着头皮看一下重定向的定义: 重定向(Redirect): 客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方 ...

  3. 重定向与请求转发的区别及什么时候使用

    重定向与请求转发的区别 一 转发是服务器行为,重定向是客户端行为.为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求-->web服务器接受此请求-->调用内 ...

  4. 相对地址与绝对地址的区别?请求重定向与请求转发的区别?jsp有哪九大内置对象?servlet如何获取session和application对象?

    目录 1.说说相对地址与绝对地址的区别? 2.说说请求重定向与请求转发的区别? 3.jsp有哪九大内置对象?servlet如何获取session和application对象? 1.说说相对地址与绝对地 ...

  5. Java重定向sendRedirect与请求转发forword的区别

    请求重定向与请求转发的比较,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但 ...

  6. 3.相应重定向与请求转发的比较

    响应重定向与请求转发类似,但有下面的区别: (1)RequestDispatcher对象是一个Web资源的包装器,可以用来把当前请求转发到该资源.这种转发是服务器端控制权的转向,客户端发来的请求将交由 ...

  7. 分析:重定向和请求转发

    分析:重定向和请求转发 重定向 HttpServletResponse对象的sendRedirect(java.lang.String location)方法称作重定向. 如果location地址前面 ...

  8. 页面的跳转——请求重定向和请求转发

    目录 一.重定向(Redirect) 二.转发(Forward) 三.重定向和请求转发的区别 相同点 不同点 一.重定向(Redirect) 请求重定向是客户端行为.是指当浏览器请求一个URL时,服务 ...

  9. 重定向与请求转发的具体讲解

    本篇供个人学习使用,有问题欢迎讨论 多个Servlet来处理同一次请求方案 一.前提 1.一个 servlet 只负责实现一个功能 2.浏览器在一次请求时,只能请求一个资源文件 3.如果浏览器的请求需 ...

最新文章

  1. web release (bat tool)
  2. Maven学习(八)继承和聚合
  3. 利用图基Tukey method检测数据集中的异常值
  4. 【数据结构与算法】之深入解析“两数之和”的求解思路与算法示例
  5. 左右TextView旋转门问题
  6. Spring源码解析-实例化bean对象
  7. 《C语言深度剖析》学习笔记三
  8. AM335X 分配大于4M的framebuffer
  9. 《构建之法》(第四、十七章)读书笔记
  10. Apache Hawq--优化笔记
  11. STM32官方固件库(标准固件库)下载及介绍
  12. 雷达通信一体化波形设计综述
  13. 常见的SQL面试题:经典50例
  14. unity 走马灯packageManager
  15. 全微分推导: 全微分感性理解: 全微分几何意义举例: 偏导与全微分的意义 通过物理性质理解。偏导与全微分的意义
  16. 公司邮箱怎么用微信收邮件?企业微信邮箱原来这么方便!
  17. 表示物体容量的量词有哪些?
  18. Cisco PacketTracer5---三层交换机连接路由器配置
  19. 半群 群 阿贝尔群 环 整数环 多项式环
  20. 【实习小tip】多层dialog弹窗遮罩问题、elementUI的form表单组件的select框在只读的情况下没办法拿到传来的数据、从弹窗子组件获取数据后需要刷新页面

热门文章

  1. [小改进]给链接增加了描述属性
  2. 为何大数据分析那么重要
  3. 大数据中存在哪些误解
  4. Scala学习(一、环境配置和基础)
  5. java学习(五)包
  6. 获取salve设备地址_商机 | 优选设备,让废金属加工更高效!
  7. Python容器专题 - 列表(list)
  8. 子类和父类对象在进行类型转换时_不一样的面向对象(三)
  9. 因果推断笔记——python 倾向性匹配PSM实现示例(三)
  10. 网页版Rstudio︱RStudio Server多人在线协作开发