Servlet 转发与重定向

2016/01/01 Java

Servlet 获得另外一个URL所指向的资源有两种方式: 转发和重定向,两者有很大区别。

转发

需要获取 RequestDispatcher 对象:

  1. 通过 HttpServletRequestgetRequestDispatcher() 方法获得
  2. 通过 ServletContextgetRequestDispatcher() 方法获得

转发方式:

request.getRequestDispatcher (demo.jsp"). forward(request, response);//转发到demo.jsp

详解:假设浏览器访问servlet1,而servlet1想让servlet2为客户端服务。此时servlet1调用forward()方法,将请求转发给servlet2。但是调用forward()方法,对于浏览器来说是透明的,浏览器并不知道为其服务的Servlet已经换成Servlet2,它只知道发出了一个请求,获得了一个响应。浏览器URL的地址栏不变。

重定向

使用 HttpServletResponse#sendRedirect() 方法,注意不能共享 request 范围内的数据

response.sendRedirect(demo.jsp");//重定向到demo.jsp

详解:假设浏览器访问servlet1,而servlet1想让servlet2为客户端服务。此时servlet1调用sendRedirect()方法,将客户端的请求重新定向到Servlet2。接着浏览器访问servlet2,servlet2对客户端请求作出反应。浏览器URL的地址栏改变。

Search

    Table of Contents