导读:类似于response.sendRedirect(request.getContextPath()+"/servlet/item/SearchItemServlet");和request.getRequestDispatcher("/basedata/item_add.jsp").forward(request, response);的用法,在drp的项目中,或者说在之前的项目中,用的都很多。一个是重定向,一个是转发,那么它们之间到底有什么区别呢?现在根据项目,总结一下。

一、基础概念

1.1,重定向:

重定向会改变浏览器的地址栏;它不共享request;可以重定向到任意的URL。

1.2,转发:

转发不会改变浏览器的地址栏;共享同一个request;只能在同一个web应用中使用。

理解:对于转发和重定向的理解,就跟自主找工作和外包似的。自主找工作就是重定向,外包就是转发。重定向:求职A(简历)——〉请求B公司职位——〉Sorry,你不行(response)——〉 求职A——〉请求C公司职位——〉response。在这个过程中,当请求C公司的时候,求职A在B公司面试的内容就无法有效的传递给C。这个时候,外包这个转发就来了。求职A(简历)——〉外包B——〉C公司(sorry)——〉外包B(告诉求职A,等着,我给你转发下家公司)——〉D公司——〉求职A。在这个过程中,外包这个转发者,会一直将求职A的信息,转发到各个公司,而不用再通过求职A去获取信息了。

二、应用场景

重定向:不同WEB应用程序之间的重定向,特别是要重定向到另外一个WEB站点上的资源的情况,都应该使HttpServletResponse.sendRedirect 方法。

转发:对于同一个WEB应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期预处理,并要使用 HttpServletRequest.setAttribute 方法传递预处理结果,那就应该使用RequestDispatcher.forward 方法。

总结:主要的区别是一个request作用域的不同,简单来说,如果在页面跳转的时候,需要传递一些参数,那么最好是选用转发,比如说编辑页面的跳转;那么如果在页面跳转的时候,不需要传递参数,而且要跳转的页面不属于同一个web应用,就应该选择重定向。一般来说,转发的效率高于重定向。

三、总结

当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重
定向后,request内的对象将无法使用。 

[drp 7]转发和重定向的区别的更多相关文章

  1. Servlet中转发和重定向的区别

    Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...

  2. servlet之转发与重定向的区别

    转发(服务器端跳转):  一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...

  3. jsp内置对象 转发与重定向的区别

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

  4. Java中转发与重定向的区别

        转发与重定向的区别 转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的:重定向是在客户端完成的2.转发的速度快:重定向速度慢3.转发的是同一次请求:重定向是两次不同请求4.转发不会 ...

  5. SERVLET API中转发与重定向的区别?

    SERVLET API中转发与重定向的区别? 1.转发(forward方法) 转发仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址. 转发是服务器请求资源,服务器直接访问目标地址的 ...

  6. Java 请求转发和重定向的区别以及JavaWeb三大作用域

    三大作用域以及转发和重定向 学习总结 1. 转发和重定向 转发 重定向 转发和重定向的区别: 什么时候用转发什么时候用重定向 三大作用域 作用域类型 作用域方法 如何选择作用域 总结 学习总结 1. ...

  7. http页面转发和重定向的区别

    一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request ...

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

    附上视频教学的一张图: 区别: 1.转发产生一次请求,一次响应: 重定向产生2次请求 两次响应 2.转发客户端不可见的: 重定向客户端是可以察觉的. 3.转发时候url不变: 重定向URL会改变 案例 ...

  9. JavaWeb(一)Servlet中乱码解决与转发和重定向的区别

    前言 前面其实已经把Servlet中所有的内容都介绍完了,这篇讲补充一点乱码和重定向与转发之间的区别! 一.request请求参数出现乱码问题 1.1.get请求 1)乱码示例 get请求的参数是在u ...

随机推荐

  1. XML封装与验证消息

    Document document = DocumentHelper.createDocument(); document.setXMLEncoding(ChARSET_UTF_8); Element ...

  2. Grid_Oracle Grid Infrastructure概念介绍(概念)

    2014-03-09 Created By BaoXinjian Thanks and Regards

  3. PLSQL_Oracle簇表和簇表管理Index clustered tables(案例)

    2012-06-08 Created By BaoXinjian

  4. js 事件函数中的参数带换行符或换行标签都不能起作用的解决方法

    把问题参数值赋给标签的属性data-value,通过属性值获取参数值.

  5. MySQL运算符之 <=>

    问题 : 我在看以前的一个开发者的代码时看到 WHERE p.name <=> NULL 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊? ...

  6. contentprovider提供程序间共享数据的统一接口

    contentprovider提供程序间共享数据的统一接口

  7. View的缩放操作--CGAffineTransformMakeScale:

    __weak UIImageView *weekImage = imageView; imageView.transform = CGAffineTransformMakeScale(0.1, 0.1 ...

  8. Redis使用详细教程(转)

    一.Redis基础部分: 1.redis介绍与安装比mysql快10倍以上 *****************redis适用场合**************** 1.取最新N个数据的操作 2.排行榜应 ...

  9. [Java] Steam文件输入流

    package test.stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  10. [ActionScript 3.0] AS3动态改变注册点

    package { import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import fl ...