請求重定向與請求轉(zhuǎn)發(fā)的比較,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以讓瀏覽器獲得另外一個URL所指向的資源,但兩者的內(nèi)部運行機制有很大的區(qū)別。1.RequestDispatcher.forward方法只能將請求轉(zhuǎn)發(fā)給同一個Web應(yīng)用中的組件,HttpServletResponse.sendRedirect不僅可以重定向到當(dāng)前應(yīng)用程序的其他資源,還可以重定向到痛一個站點上的其他應(yīng)用程序的資源,甚至是使用絕對URL重定向到其他站點的資源。對于sendRedirect如果傳遞的URL以"/"開頭,他是相對于整個Web站點的根目錄;對于forward如果傳遞的URL以"/"開頭,它是相對于當(dāng)前Web應(yīng)用程序的根目錄。2.sendRedirect對瀏覽器做出的響應(yīng)是重新發(fā)出對另外一個URL的訪問請求,forward在服務(wù)器端內(nèi)部將請求轉(zhuǎn)發(fā)給另外一個資源,瀏覽器只知道發(fā)出了請求并得到了響應(yīng)結(jié)果。3.forward的調(diào)用者與被調(diào)用者之間共享相同的request對象和response對象,他們屬于痛一個訪問請求和響應(yīng)過程;sendRedirect的調(diào)用者與被調(diào)用者使用各自的request和response對象,屬于兩個獨立的訪問請求和響應(yīng)過程。
新聞熱點
疑難解答