1. 程式人生 > >請求轉發和URL重定向區別

請求轉發和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.其他時候,任選.