请求转发(forward):request对象下的方法
request.getRequestDispatcher(path).forward(request, response);
重定向(Redirect):response
response.sendRedirect(path);
本质区别:
1、请求的转发(forward)只发出了一次请求, 由浏览器发出一个quest到对应的Servlet中,在处理完成后,转发到别的Serlvet或者页面中继续处理,最后将这次的响应信息发给浏览器
2、重定向(Redirect)则发出了两次请求.
1)由浏览器发出一个quest到对应的Servlet中,在处理完成后,将这次的信息响应给浏览器。
2)浏览器在接收到这次的响应后,按照响应提供的路径(path)再向该方向发起第二次Servlet重新处理。处理完成后,重新响 应给浏览器
forward的原理图:
Redirect的原理图:
具体区别:
①. 请求的转发: 地址栏是初次发出请求的地址.
请求的重定向: 地址栏为最后响应的那个地址
②. 请求转发: 在最终的 Servlet 中, request 对象和中转的那个 request 是同一个对象.
请求的重定向: 在最终的 Servlet 中, request 对象和中转的那个 request 不是同一个对象.
③. 请求的转发: 只能转发给当前 WEB 应用的的资源
请求的重定向: 可以重定向到任何资源.
④. 请求的转发: / 代表的是当前 WEB 应用的根目录
请求的重定向: / 代表的是当前 WEB 站点的根目录.