forward 和redirect的區別

1.從地址欄顯示來講 forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容 再發給瀏覽器.瀏覽器根本不知道服務器發送的內容從哪裏來的,因此它的地址欄仍是原來的地址. redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址.因此地址欄顯示的是新的URL.所 以redirect等於客戶端向服務器端發出兩次request,同時也接受兩次response。 誰能解釋一下這兩段話的意思,尤爲是後一段的2次???? 回答列表: forward:A訪問B,B訪問C,過程是A-->B-->C,此時打開的是C,但地址欄裏的地址是B的地址。 redirect:A訪問B,若想訪問C,需由B返回給A一個參數,由A去訪問C,過程是A-->B-->A-->C,地址欄的地址是C。2次的意思是指一次訪問B,一次訪問C redirect先要返回上一請求,而後在訪問下一請求。 通俗的說: 當一個客戶端訪問服務器端的一個JSP(本質上就是一個SERVLET),當調用response.sendRedirect,實際上它作的是從服務器端往客戶端發一個指令,告訴IE把地址攔自動變成第2個頁面,並點一下轉到那個按鈕,客戶端接到這個指令後立刻去訪問第2個JSP,第2個JSP再把算出的結果返回客戶端。。。。。。 forward  當一個客戶端訪問服務器端的一個JSP(本質上就是一個SERVLET),在服務器端直接轉到第2個JSP,讓第2個JSP(其實是SERVLET)來處理客戶端的請求,請求處理完把結果直接返回到客戶端。(能夠轉了好幾回,客戶端不知道。。。。最後一個反給客戶端) 區別: <jsp:forward>                          response.sendRedirect 使用同一個request                        是不一樣的request forward後的語句不會繼續發送給客戶端        send後的語句會繼續執行,除非return 速度快                                      速度慢 服務器內部轉換                              須要到客戶端的往返,能夠轉到任何頁面 能夠傳參數                                  能夠傳參數,直接寫在url後面 地址攔沒有變化                              地址攔有變化 forward體如今請求轉發。。。也就意味着你的請求參數a-->b-->c  以頁面也能夠得到a到b的請求參數 response.sendRedirect 重定向  到c頁面時  a--b的參數就得不到了。。是一個新的請求 後面的意思是:  服務器叫客服端轉發    就是再你本身的電腦上轉發  不是服務器轉發 forward僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向後的地址; redirect則是徹底的跳轉,瀏覽器將會獲得跳轉的地址,並從新發送請求連接。這樣,從瀏覽器的地址欄中能夠看到跳轉後的連接地址。 因此,forward更加高效,在forward能夠知足須要時,儘可能使用forward()方法,而且,這樣也有助於隱藏實際的連接。 在有些狀況下,好比,須要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。 我感受也是,能用Forward是服務器間的請求跳轉!Redirect是重定向!至關於直接在瀏覽器輸入地址! forward和redirect的區別 關鍵是redirect是從新返回客戶端,重定向 而forword是能夠是內部把請求進行轉向,不用返回客戶端 redirect裏的2次的概念應該是這樣的: 第一次request:  客戶端    請求->  服務器 第一次response: 服務器    redirect(url)->  客戶端 第二次request:  客戶端    根據redirect的url再次請求  服務器 第二次response: 服務器直接去獲取(url)的內容。
相關文章
相關標籤/搜索