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

 

    

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章