天天看點

JAVAWEB兩種跳轉方式的差別及常用的一些場景

個人小總結:

1、用戶端跳轉:位址欄内容改變,發生了2次請求,“/”代表伺服器路根路徑,即“/”代表伺服器目錄下的webapps目錄,webapps目錄下有不同的web應用。一般項目開發中,response.sendRedirect(“/test(web應用)/login.jsp”)屬于發生在用戶端的跳轉

2、伺服器端跳轉:位址欄内容不變,“/”代表站點根路徑,即“/”代表web應用程式下的根路徑,屬于内部跳轉。

一般地,request.getRequestDispatcher(“/ulogin.jsp”).forward(request, response)屬于發生在伺服器端的内部跳轉。

(網上轉載)

伺服器端跳轉與用戶端跳轉:

首先我們需要了解什麼是伺服器端跳轉,什麼是用戶端的跳轉。簡單了解所謂伺服器端跳轉就是指位址欄内容不變(用戶端浏覽器的位址欄不會顯示目标位址的URL),而用戶端跳轉是指位址欄内容發生改變(用戶端向伺服器發請求,然後伺服器再給用戶端一個響應,然後用戶端再根據伺服器端給的響應中的URL再向伺服器發送請求,是以是兩次請求,是以位址欄改變了顯示最後一次請求位址);

伺服器端跳轉:

1、request.getRequestDispatcher(“/success.jsp”).forward(request,response),它是隻要執行到此語句之後則立刻進行跳轉,可以傳遞request屬性;

2、,這種跳轉屬于無條件跳轉,它隻能在棧内轉,而sendRedirect中則可以任意轉,甚至可以輸入baidu

用戶端跳轉:

1、response.sendRedirect(“fail.jsp”),所有頁面執行完之後再進行跳轉,不能傳遞request範圍的屬性,但是可以通過位址重寫的方式向跳轉頁傳遞參數,因為該方法執行完之後就相當于一次http request的結束,這是伺服器會向用戶端發送302狀态碼和新的url,告訴用戶端重新發送request請求到新的url,然後用戶端照此執行,執行即新的請求響應流程開始,伺服器再重新建立HttpServletRequest對象和HttpServletResponse對象,此時兩個請求已經不在一個線程了,是以request和response對象都不是開始的那個了;

2、response.setHeader(“refresh”,”2;URL=index.jsp”),2秒後跳轉到其他頁面;

3、百度,超連結;

通過以上可以得知,如果現在一個頁面中使用了JDBC,則應該在forward跳轉之前關閉資料庫連結,而使用respose則可以在任意的位置處關閉.

本篇轉自:http://blog.csdn.net/sujianxin2012/article/details/38979403

繼續閱讀