1. 程式人生 > >response重定向和request轉發 通俗易懂

response重定向和request轉發 通俗易懂

在做web專案時我們經常會用到轉發和重定向,而對於初學者來說總是被他們倆個搞得一頭霧水,他們兩個貌似給人神祕感,其實是我們還不夠了解他們。

為什麼response重定向和為什麼request是轉發?

當我們些許的去思考這個問題的時候,是否和我一樣有恍然大悟的感覺呢。

request的轉發

首先說說request,他是使用者需求資料的載體,把使用者的資料交給他,他去把請求給伺服器送去,這就是request。轉發,這個片語我麼從來都不陌生,喂喂,把你收到的第一封情書轉發給我欣賞欣賞~~ 不要讓你的pursur知道哦。

看過一篇文章,有這樣一個比喻,我們可以把request的轉發這樣理解。有一個人叫瀏覽器

,瀏覽器寫信找張三借錢,張三的錢不夠,張三很義氣,於是他又找張四借錢,找張四借了一部分和加上自己的一部分寫信回覆給了瀏覽器。在這過程,瀏覽器只發出一次請求,~~借錢~~,並收到了一次回覆,他從張三那裡借錢,並不知道有一部分是出自張四之手。

response重定向

再說說response重定向,重定向就是重新定方向,人生的路由很多很多條,我們有很多很多種選擇,同時有很多種不同的快樂的方式。走這條路我們走不下去的時候,我們不一定就堅持,錯誤的堅持讓我們丟了自己,所以我們就開始“重定向”,又開始新的嘗試了。response是伺服器端對客戶端發來請求的迴應,告訴使用者重新發送一個對另一個URL的請求。

還說瀏覽器這個人,第二次寫信和張三借錢,張三這次回信,說自己其實沒錢,並把張四的地址給了瀏覽器,讓瀏覽器寫信找張四去借,把張四的地址發給了瀏覽器,瀏覽器寫信給張四,最終張四收到信,並把錢回信寄給了瀏覽器。這次瀏覽器傳送了兩次請求,收到了兩次回覆

重定向:

轉發:

              重定向和轉發比較:  

轉發重定向比較

request.getRequestDispatcher("xxx.jsp").forward(request, response);

response.sendRedirect("xxx");

變數作用域

request中存放的變數不會失效

request存放的變數失效,進入一個新的request作用域

瀏覽器的地址

位址列保持初值不會改變

改變為重定向的頁面地址

作用範圍

只能是同一個web應用中的元件

可重定向到其他程式資源或者其他站點

URL以/開頭

相對於web應用程式根目錄

相對於web站點根目錄

各自優點

相對高效,隱藏實際連結地址。

能跳轉到其他的伺服器上的資源。

轉發和重定向的例子在這裡就不一一列舉了,程式碼太多了,本篇的篇幅也有些長了。。關於jsp的其他物件就不一一介紹了,下一篇講解jsp中的那些亂碼。

不知道您是否看懂了......我有些豁然開朗了。相信在更多的實踐中理解的會更加深刻的。gogogo