1. 程式人生 > >圖解sendRedirect include forward的區別

圖解sendRedirect include forward的區別

                最近遇到幾個人出現了和這三個有關的問題,特別是sendRedirect使用request.getAttribute的問題。我這裡給出三個的主要區別並提供一個圖形參考。
原文:http://www.java2000.net/p10576


一、sendRedirect


使用方式:

servlet和jsp裡面一樣
  1. response.sendRedirect(); 
說明:
伺服器根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求指定的地址,一般來說,你會把需要的引數放在轉發的地址裡面。
注意:使用request.setAttribute的內容,不能讀取了,你可以用session代替,或者用include,forward代替。

流程圖

二、include


使用方式
servlet裡面
  1. request.getRequestDispatcher("jsp2.jsp").include(request,   response);  
jsp裡面
  1. <jsp:include page="include.jsp"/>  
說明
頁面會同時包含頁面1和頁面2的內容,位址列不變。
使用request.setAttribute的內容,可以正常使用

流程圖




三、forward

使用方式
servlet裡面
  1. request.getRequestDispatcher("jsp2.jsp").forward(request,   response);  
jsp裡面
  1. <jsp:forward page=
    "include.jsp"/>  
說明
頁面會是頁面2的內容,位址列不變
使用request.setAttribute的內容,可以正常使用

流程圖





特殊提示
include 和 sendRediect 之後,後面的語句會繼續執行,所以應該在合適的位置寫上return;forward的不會