Servlet中重定向与转发的区别

转发

  1. 获得请求转发器----path是转发的地址
    RequestDispatcher getRequestDispatcher(String path)
  2. 通过转发器对象转发
    requestDispathcer.forward(ServletRequest request, ServletResponse response)

从Servlet1中蒋将请求转发待到Servlet2中;Servlet中重定向与转发的区别Servlet2在网页打印helloServlet中重定向与转发的区别

浏览器访问servlet1获得结果是servlet2的响应。地址不变
Servlet中重定向与转发的区别
转发只是将其交给另一个servlet或jsp来实现

重定向

使用方法:response.sendRedirect("/web/xxxServlet");

在Servlet3内,我将其重定向到Servlet2.Servlet中重定向与转发的区别

在访问servlet3时,虽然也响应的是servlet2,但是地址栏发生了改变Servlet中重定向与转发的区别

两者之间的区别:

  1. 重定向发生两次请求;而转发只有一次。
  2. 转发不会改变访问的地址;而重定向会更改。
  3. 请求转发发生在服务器端,由服务器(比如servlet)控制;重定向发生在客户端,由客户(通常是浏览器)控制。
  4. 转发只能将请求转发给同一个WEB应用中的组件;而重定向方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。------------(重新定向可以访问外部网站 转发只能访问内部资源)
  5. 请求转发相对快:因为请求转发过程在同一请求中;重定向相对慢:因为重定向过程发生在两个不同的请求中。转发的性能要优于重定向。

相关文章: