首先,给大家先举一个生活中的例子,已便于更生动形象的去理解:
说:项目经理交给你个任务,但是这个项目你处理不了,张三能处理它,那么有两种解决办法
重定向:第一种办法,你跟项目经理说,你说你不会,张三会,你去找张三吧,然后项目经理走了,去找张三了!
转发:第二种办法: 你不好意思跟项目经理说这个问题你不会,你说好,交给我,硬着头皮答应了,然后你知道张三可以解决这个问题,你就自己去找张三帮你完成了。
重定向:
//第一种写法
response.setStatus(302);
response.setHeader("Location", "login_success.html");
第二种重定向写法: 重新定位方向 参数即跳转的位置(重要)
response.sendRedirect("login_success.html");
转发:
/请求转发的写法: 参数即跳转的位置
request.getRequestDispatcher("login_success.html").forward(request, response);
总结:
转发在服务器端完成的;重定向是在客户端完成的
转发的速度快;重定向速度慢
转发的是同一次请求;重定向是两次不同请求
转发不会执行转发后的代码;重定向会执行重定向之后的代码
转发地址栏没有变化;重定向地址栏有变化
转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成