request.getRequestDispatche("").forward(request,response) 與 response.sendRedirect("")的區(qū)別
1、forward重定向是在容器內(nèi)部實現(xiàn)的同一個Web應用程序的重定向,所以forward方法只能重定向到同一個Web應用程序中的一個資源, 重定向后瀏覽器地址欄 URL 不變 ,而sendRedirect方法可以重定向到任何URL, 因為這種方法是修改http頭來實現(xiàn)的,URL沒什么限制, 重定向后瀏覽器地址欄 URL 改變 。
2、forward重定向?qū)⒃嫉腍TTP請求對象(request)從一個servlet實例傳遞到另一個實例,而采用sendRedirect方式兩者不是同一個application。
3、基于第二點,參數(shù)的傳遞方式不一樣。forward的form參數(shù)跟著傳遞,所以在第二個實例中可以取得HTTP請求的參數(shù)。sendRedirect只能通過鏈接傳遞參數(shù),response.sendRedirect(“ login.jsp?param1=a”)。
4、sendRedirect能夠處理相對URL,自動把它們轉(zhuǎn)換成絕對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不能這樣處理相對路徑。
posted on 2008-12-07 12:30 丁克設計 閱讀(1251) 評論(0) 編輯 收藏 所屬分類: j2ee技術文檔