簡簡單單----(六)response重定向和request轉發 通俗易懂

在作web項目時咱們常常會用到轉發和重定向,而對於初學者來講老是被他們倆個搞得一頭霧水,他們兩個貌似給人神祕感,實際上是咱們還不夠了解他們。web

爲何response重定向和爲何request是轉發?瀏覽器

當咱們些許的去思考這個問題的時候,是否和我同樣有恍然大悟的感受呢。服務器

request的轉發

首先說說request,他是用戶需求數據的載體,把用戶的數據交給他,他去把請求給服務器送去,這就是request。轉發,這個詞組我麼歷來都不陌生,喂喂,把你收到的第一封情書轉發給我欣賞欣賞~~ 不要讓你的pursur知道哦。jsp

看過一篇文章,有這樣一個比喻,咱們能夠把request的轉發這樣理解。有一我的叫瀏覽器,瀏覽器寫信找張三借錢,張三的錢不夠,張三很義氣,因而他又找張四借錢,找張四借了一部分和加上本身的一部分寫信回覆給了瀏覽器。在這過程,瀏覽器只發出一次請求,~~借錢~~,並收到了一次回覆,他從張三那裏借錢,並不知道有一部分是出自張四之手。spa

response重定向

再說說response重定向,重定向就是從新定方向,人生的路由不少不少條,咱們有不少不少種選擇,同時有不少種不一樣的快樂的方式。走這條路咱們走不下去的時候,咱們不必定就堅持,錯誤的堅持讓咱們丟了本身,因此咱們就開始「重定向」,又開始新的嘗試了。response是服務器端對客戶端發來請求的迴應,告訴用戶從新發送一個對另外一個URL的請求。.net

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

重定向:blog

轉發:ci

重定向和轉發比較:

轉發重定向比較資源

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

response.sendRedirect("xxx");

變量做用域

request中存放的變量不會失效

request存放的變量失效,進入一個新的request做用域

瀏覽器的地址

地址欄保持初值不會改變

改變爲重定向的頁面地址

做用範圍

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

可重定向到其餘程序資源或者其餘站點

URL以/開頭

相對於web應用程序根目錄

相對於web站點根目錄

各自優勢

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

能跳轉到其餘的服務器上的資源。

轉發和重定向的例子在這裏就不一一列舉了,代碼太多了,本篇的篇幅也有些長了。。關於jsp的其餘對象就不一一介紹了,下一篇講解jsp中的那些亂碼。

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