前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
个人观点,
forward为重定向,是程序内部指定跳转至另一个页面,
redirect为客户端再次请求,该方法执行后也是返回浏览器端然后浏览器再次请求到指定的地址。
应用层面来讲,如果是一个连续的业务流程,肯定会使用forward进行页面跳转,如果是不连续的业务,没有共享数据,那么可以使用redirect进行跳转,而且从区别上看就知道,forward的效率更高。