参考来源:http://www.educity.cn/develop/158970.html

12.6.4  sendRedirect()和forward()方法的区别

  HttpServletResponse接口的sendRedirect()方法和RequestDispatcher接口的forward()方法都可以利用另外的资源(Servlet、JSP页面或HTLM文件)来为客户端进行服务,但是这两种方法有着本质上的区别。

  下面分别给出了sendRedirectt()方法和forward()方法的工作原理图,如图12-20和图12-21所示。

  图12-20  sendRedirect()方法的工作原理图

  图12-20的交互过程如下:

  ① 浏览器访问Servlet1.

  ② Servlet1想让Servlet2为客户端服务。

  ③ Servlet1调用sendRedirect()方法,将客户端的请求重定向到Servlet2.

  ④ 浏览器访问Servlet2.

  ⑤ Servlet2对客户端的请求做出响应。

  从图12-20中的交互过程可以看出,调用sendRedirect()方法,实际上是告诉浏览器Servlet2所在的位置,让浏览器重新访问Servlet2.调用sendRedirect()方法,会在响应中设置Location响应报头。要注意的是,这个过程对于用户来说是透明的,浏览器会自动完成新的访问。从图12-14浏览器的地址栏中,可以看到,显示的URL是重定向之后的URL.

  图12-21  forward()方法的工作原理图

  图12-21的交互过程如下:

  ① 浏览器访问Servlet1.

  ② Servlet1想让Servlet2对客户端的请求进行响应,于是调用forward()方法,将请求转发给Servlet2进行处理。

  ③ Servlet2对请求做出响应。

  从图12-21中的交互过程可以看出,调用forward()方法,对浏览器来说是透明的,浏览器并不知道为其服务的Servlet已经换成Servlet2了,它只知道发出了一个请求,获得了一个响应。从图12-18和图12-19浏览器的地址栏中,可以看到,显示的URL始终是原始请求的URL.

  sendRedirect()方法和forward()方法还有一个区别,那就是sendRedirect()方法不但可以在位于同一主机上的不同Web应用程序之间进行重定向,而且可以将客户端重定向到其他服务器上的Web应用程序资源。

最新文章

  1. out.print()和response.getWriter().write()区别
  2. 继续说一下2016里面的json功能(1)
  3. Button 设置适应不同版本 旋转以后大小相应的改变
  4. cornerstone 使用
  5. kvm与selinux
  6. android提示框
  7. Fedora 14配置vsftp服务步骤
  8. Android中GridLayout与GridView区别
  9. TCP 流模式与UDP数据报模式(转)
  10. Linux LiveCD 的制作
  11. 安装 Linux 与 Windows 10 双系统,你需要了解的一切
  12. mybatis基础学习4---懒加载和缓存
  13. redis 实例2 构建文章投票网站后端
  14. cassandra 如何写数据以及放置副本
  15. linux 命令格式
  16. spring学习九 spring aop详解
  17. MVC返回文件
  18. jenkins安装及环境搭建
  19. H5地理位置定位
  20. 【SpringBoot整合Elasticsearch】SpringBoot整合ElasticSearch

热门文章

  1. JSP与HTML的差别
  2. numpy计算
  3. SD/MMC异同
  4. git apply、git am打补丁.diff 和 .patch【转】
  5. regmap使用介绍【转】
  6. HDU1358 Period —— KMP 最小循环节
  7. js截取小数点后面2位
  8. 皮尔逊相关系数的java实现
  9. ASP.NET Core:目录
  10. 架构:MVVC