jsp:forward response.sendRedirect

jsp中<jsp:forward page=""/>和response.sendRedirect("")兩種跳轉的區別

1、response.sendRedirect("")

         始終要記住一點就是這種跳轉是讓客戶端瀏覽器本身去訪問指定的頁面,這個指定頁面的地址就是sendRedirect("")參數的內容。若是跳轉的頁面是webapp裏面的頁面,客戶端須要兩層訪問服務器。若是是其餘網址的話,客戶端則再也不訪問此服務器,轉而訪問其餘的服務器。是服務器端與客戶端的兩次往返。速度仍是慢些。web

(1)地址欄內容有變化。瀏覽器

(2)sendRedirect("")後的語句依舊執行,因此在此語句後面的有向客戶端傳送信息的語句時候會出現閃爍現象,通常狀況下能夠作個判斷來,若是怎麼樣則轉向指定的頁面,不然執行其餘的代碼。服務器

(3)sendRedirect("")裏的參數能夠是網頁也能夠是jsp頁面等。app

           如sendRedirect(「http://www.baidu.com」)//轉到webapp外面去。webapp

               sendRedirect(「a.jsp」)     //轉到webapp裏面的其餘頁面去。jsp

(4)若是寫成sendRedirect(「/a.jsp」)此時的/表明的是http://127.0.0.1/,它並不包含這個頁面所在的webapp。因此要在/後面加上a.jsp的路徑。對象

(5)它們不共用一個request對象。並且跳轉頁面a.jsp是接收不到傳遞給包含此跳轉指令的頁面的參數的。可是包含此跳轉指令的頁面能夠向跳轉頁面中傳遞參數,此時跳轉頁面a.jsp可以接收到傳遞的參數。如sendRedirect(「a.jsp?name=123」),因此說用此種跳轉的話可讓包含此跳轉指令的頁面接收到參數,而後將參數再往跳轉頁面中傳遞。get

2、<jsp:forward  page= ""/>

     始終要記住一點就是這種跳轉是讓服務器端內部進行跳轉。並且只能在服務器的內部轉換,並將跳轉到最後一個頁面的執行結果返回給客戶端,速度快。服務器端

(1) 地址欄內容沒有變化。request

(2) <jsp:forward page=""/>後面的語句不會被執行的。

(3)若是寫成<jsp:forward page=「/a.jsp」/>,此時的/表明的是http://127.0.0.1/工程名,此時在後面要跟上a.jsp的路徑。

(4)跳轉頁面a.jsp和包含跳轉頁面不共用一個request對象。可是跳轉頁面能夠訪問到傳遞給包含此跳轉指令的頁面的參數的, 跳轉的頁面的request包含的參數比包含跳轉指令的頁面的參數要大。這種狀況和靜態包含和動態包含類似。

(5)包含此跳轉指令的頁面能夠向要跳轉到的頁面傳遞參數。

     傳參方式一:<jsp:forward page=「a.jsp?param=123」/>時被包含的jsp頁面是能夠訪問該參數的。

     傳參方式二:

                          <jsp:forward page=「a.jsp」>

                                     <jsp:param name=「」 value=「」/>

                         </ jsp:include >

相關文章
相關標籤/搜索