一、转发
web项目内部转发到另一个页面或者另一个servlet
二、重定向
重定向到另一个地址,可以在web项目内,也可以在项目外
三、对比:
转发时,会将request对象转到另一个转向的servlet,因此可以在request中传递数据;
重定向相当于服务端返回302,客户端重新再去请求新的地址,是一个新的request对象,因此不能通过request对象传递数据
转发时,浏览器地址栏不会改变,相当于服务端的内部的转发,客户端无感知;
重定向时客户端浏览器地址会变化,相当于服务端告诉客户端去另一个地址,浏览器再重新请求一个新的地址,更多可以理解为客户端的转换
转发只能在web应用内的资源,重定向可以是任一个uri地址
四、相关方法
转发: request.getRequestDispatcher("index.jsp").forward(request, response);
重定向:response.sendRedirect("/day11/one?aaa=123qwe"); response.sendRedirect("www.baidu.com");
1.转发在服务端完成,重定向在客户端完成
2.转发地址栏不变,重定向地址栏变化
3.转发不会执行转发后的代码,重定向会执行后面的代码
4.转发是一次请求,重定向是两次请求
5.转发在同一台服务器,重定向可以在不同的服务器
6.转发快,重定向慢