1.转发
- 转发是通过request对象发起的,通过request对象获取一个RequestDispatcher对象,通过RequestDispatcher的forward方法发起转发。
- 转发是在服务器内部进行的:(1)整个过程浏览器只发送了一个请求。(2)浏览器不能知道转发行为的发生。(3)由于在服务器内部进行,所以转发以项目路径为根目录,输入地址时不需要输入项目名。
- 转发是一次请求,所以request中的数据可以共享。
- 转发只能转发到应用内部的资源,而不能转发到其他应用
- 转发的地址栏不会发生改变,所以可能会造成请求的重复转发。
2.重定向
- 重定向是通过response对象发起的,通过response的sendRedirect()方法进行重定向。
- 重定向是在浏览器中进行的:(1)整个过程中,浏览器发送了两次请求。(2)浏览器知道转发行为的发生。(3)由于在浏览器端进行,重定向的路径是以服务器目录为根目录,所以输入地址时需要输入项目名。
- 重定向是两次请求,不能共享request中的数据。
- 重定向不只限定于内部资源,可以重定向到任意web资源。
- 重定向URL地址栏会发生改变。
为了避免请求的重复提交,所以可以使用重定向的时候尽量使用重定向。