zoukankan      html  css  js  c++  java
  • sendRedirect和forward区别

    参考来源: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应用程序资源。

  • 相关阅读:
    如何从维护视图(Maintenace view)中取数据-[VIEW_GET_DATA]
    如何使用ref->*,field-symbols创建内表
    预制发票MIR7抬头行项目检查BADi-MRM_HEADER_CHECK
    如何跳转屏幕到MIGO-[MIGO_DIALOG]
    网络编程聊天室------客户端接收
    网络编程聊天室------客户端发送
    网络编程聊天室------客户端
    网络编程聊天室---------服务器线程类
    网络编程聊天室----服务器端
    小明滚出---响应对象HttpServletResponse和请求对象HttpServletRequest实例
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/7119509.html
Copyright © 2011-2022 走看看