請求轉發和URL重定向區別
首先介紹下Servlet之間的互動,Servlet和Servlet之間可以共享資訊並且可以相互跳轉.一個完整的操作,需要AServlet執行一部分操作,然後再交給BServlet繼續完成.常用的有請求轉發(forward)和URL重定向(redirect).
請求轉發(forward):
AServlet操作完畢之後,請求轉發到BServlet,繼續完成餘下的功能.
語法: request物件.getRequestDispatcher(String path).forward(request,response);
特點:
1.瀏覽器位址列路徑沒變,依然是AServlet的資源名稱.
2.只發送了一個請求.
3.共享同一個請求,在請求中共享資料.
4.最後的響應輸出由BServlet來決定.
5.只能訪問當前應用中的資源,不能跨域跳轉.
6.可以訪問WEB-INF中的資源.
URL重定向(redirect):
AServlet操作完畢之後,重定向到BServlet,繼續完成餘下的功能.
語法:response物件.sendRedirect(String path);
特點:
1.瀏覽器位址列發生變化,變成BServlet的資源名稱.
2.傳送兩個請求.
3.因為是不同的請求,所以不能共享請求中的資料.
4.最終的響應輸出由BServlet來決定.
5.可以跨域訪問資源.
6.不可以訪問WEB-INF中的資源.
請求轉發和重定向的選擇?
1.若需要共享請求中的資料,只能使用請求轉發.
2.若需要訪問WEB-INF中的資源,只能使用請求轉發.
3.若需要跨域訪問,只能使用URL重定向.
4.請求轉發可能造成表單的重複提交問題.
5.其他時候,任選.