请求的转发和重定向
- 1.本质区别:请求的转发只发出了一次请求, 而重定向则发出了两次请求。
String path = "testServlet";
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/" + path);
requestDispatcher.forward(request, response);
String path = "testServlet";
response.sendRedirect(path);
- 2.具体区别:
1)
①请求的转发:地址栏是初次发出请求的地址。
②请求的重定向:地址栏不再是初次发出的请求地址。地址栏为最后响应的那个地址。
2)
①请求的转发:在最终的 Servlet 中,request 对象和中转的那个 request 是同一个对象。
②请求的重定向:在最终的 Servlet 中,request 对象和中转的那个 request 不是同一个对象。
3)
①请求的转发:只能转发给当前 WEB 应用的的资源。
②请求的重定向:可以重定向到任何资源。
4)
①请求的转发:/ 代表的是当前 WEB 应用的根目录。
②请求的重定向:/ 代表的是当前 WEB 站点的根目录。
5)注意:
当前 WEB 应用的根目录:http://localhost:8080/项目名称/
站点的根目录:http://localhost:8080/