1. 程式人生 > >Servlet中的forward和redirect區別

Servlet中的forward和redirect區別

背景:在設計Web應用時,需要把一個系統進行結構化設計,即按照模組化進行劃分,讓不同的Servlet實現不同的功能,例如讓其中一個Servlet負責接收使用者的請求,另一個Servlet負責處理使用者的請求。為了實現這種程式的模組化,就需要保證在不同的Servlet之間可以相互跳轉,而Servlet中主要有兩種跳轉的方式:forward方式和redirect方式。

forward:(轉發)指伺服器內部的重定向,伺服器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而客戶端並不知道,因此在客戶端的位址列中不會顯示轉向後的地址,還是原來的地址。由於整個重定向的過程用的是同一個Request,因此forward會將Request的資訊帶到被定向的JSP或Servlet中使用。

redirect:(重定向)客戶端的重定向,是完全的跳轉,即客戶端瀏覽器會獲取到跳轉後的地址,然後重新發送請求,因此瀏覽器中顯示跳轉後的地址。同時,這種方式比forward方式多了一次網路請求,因此效率要低於forward方式。

因此,一般當一個forward方式可以滿足要求時,儘可能地使用forward方式。