转发forward
-
使用方式:
request.getRequestDispatcher("/index.html").forward(request,response);
-
特点:
- 地址栏信息不会改变;
- 转发为服务器端行为,针对当前服务器;
- 可将数据保存到request中在多个页面间传递;
- 只发送一次请求;
-
转发过程
需注意的是:转发的路径必须是同一个web容器下的url。在客户端浏览器路径栏显示的仍然是第一次访问的路径。转发行为是浏览器只做了一次访问请求
重定向redirect
-
使用方式:
return "redirect:/main.html"; 或 response.sendRedirect("");
-
特点:
- 地址栏信息会改变;
- 重定向为客户端行为,可以跳转到当前web应用,甚至是外部域名网站;
- 不可将数据保存到request中;
- 发送至少两次请求;
-
重定向过程
转发和重定向的选择
1、重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。
2、因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。