1、forward重定向是在容器內部實現的同一個Web應用程序的重定向,所以forward方法只能重定向到同一個Web應用程序中的一個資源, 重定向后瀏覽器地址欄 URL 不變 ,而sendRedirect方法可以重定向到任何URL, 因為這種方法是修改http頭來實現的,URL沒什么限制, 重定向后瀏覽器地址欄 URL 改變 。
2、forward重定向將原始的HTTP請求對象(request)從一個servlet實例傳遞到另一個實例,而采用sendRedirect方式兩者不是同一個application。
3、基于第二點,參數的傳遞方式不一樣。forward的form參數跟著傳遞,所以在第二個實例中可以取得HTTP請求的參數。sendRedirect只能通過鏈接傳遞參數,response.sendRedirect(“ login.jsp?param1=a”)。
4、sendRedirect能夠處理相對URL,自動把它們轉換成絕對URL,如果地址是相對的,沒有一個‘/’,那么Web container就認為它是相對于當前的請求URI 的。比如,如果為response.sendRedirect("login.jsp"),則會從當前servlet 的URL 路徑下找login.jsp: http://10.1.18.8:8081/dms/servlet/Servlet 重定向的URL: http://10.1.18.8:8081/dms/servlet/login.jsp ,如果為response.sendRedirect("/login.jsp")則會從當前應用徑下查找url:http://10.1.18.8:8081/login.jsp 。而forward不能這樣處理相對路徑。