java web 中兩種跳轉方式

java web 中兩種跳轉方式

服務器端跳轉與客戶端跳轉:

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

服務器端跳轉:
1、request.getRequestDispatcher("/success.jsp").forward(request,response),它是隻要執行到此語句之後則立刻進行跳轉,可以傳遞request屬性;
2、jsp:forward,這種跳轉屬於無條件跳轉,它只能在棧內轉,而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則可以在任意的位置處關閉.

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