转发:作用在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理。
重定向:作用的客户端,客户端将请求发送给服务器后,服务器响应给客户端一个新的请求地址,客户端重新发送新的请求。
转发的特点:
- 转发是服务器行为;
- 转发是浏览器只做了一次访问请求
- 转发浏览器地址不变
- 转发两次跳转之间传输的信息不会丢失,所以可以通过request进行数据的传递、
- 转发只能将请求转发给同一个Web应用中的组件
重定向的特点:
- 重定向是客户端行为。
- 重定向是浏览器做了至少两次的访问请求。
- 重定向浏览器地址改变。
- 重定向两次跳转之间传输的信息会丢失(request范围)。
- 重定向可以指向任何的资源,包括当前应用程序中的其他资源、同一个站点上的其他应用程序中的资源、其他站点的资源。
总结:
- 当两个Servlet需要传递数据时,选择forward转发。不建议使用sendRedirect进行传递;
- 能用重定向解决的不要用转发,解决不了的再用转发,默认使用重定向。