jsp中和response.sendRedirect("")兩種跳轉的區別

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

一、response.sendRedirect("")

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

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

(2)sendRedirect("")後的語句依舊執行,所以在此語句後面的有向客戶端傳送信息的語句時候會出現閃爍現象,一般情況下可以做個判斷來,如果怎麼樣則轉向指定的頁面,否則執行其他的代碼。

(3)sendRedirect("")裏的參數可以是網頁也可以是jsp頁面等。

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

               sendRedirect(“a.jsp”)     //轉到webapp裏面的其他頁面去。

(4)如果寫成sendRedirect(“/a.jsp”)此時的/代表的是http://127.0.0.1/,它並不包含這個頁面所在的webapp。所以要在/後面加上a.jsp的路徑。

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

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

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

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

(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 >


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