三分鐘看圖學習 快速理解javaweb中轉發和重定向

2022年08月13日12:48:20 科技 1583

前言:

用最通俗易懂的例子和風趣幽默的圖片,帶你領略java的語言之美

大家在學javaweb的時候,有個很重要的知識點,就是通過轉發和重定向來實現我們的共享信息與頁面跳轉。那為什麼需要跳轉和數據共享?

  1. 跳轉:需要做責任分離(Servlet擅長寫代碼即處理業務邏輯,jsp擅長展示頁面)通過後台經過代碼的邏輯處理後跳轉到對應的顯示界面。如:點擊登錄按鈕,經過後台代碼驗證跳轉到登錄成功或者失敗的界面;
  2. 共享:Http是無狀態的,我們跳轉的時候數據無法傳遞,因此需要做數據共享;

我們先看下轉發和重定向在代碼中是如何應用的

轉發的方式:

req.getRequestDispatcher("要跳轉的路徑").forward(request, response);

重定向跳轉的方式:

resp.sendRedirect("要跳轉的路徑");

請求轉發(RequestDispatcher)的過程:

客戶首先發送一個請求到伺服器端,伺服器端發現匹配的servlet,並指定它去執行,當這個servlet執行完之後,它要調用getRequestDispacther()方法,把請求轉發給指定的jsp頁面,整個流程都是在伺服器端完成的。

而且是在同一個請求裡面完成的,因此servlet和jsp共享的是同一個request,在servlet裡面放的所有東西,在jsp中都能取出來,因此,jsp能把結果getAttribute()出來,getAttribute()出來後執行完把結果返回給客戶端。整個過程是一個請求,一個響應。

重定向(sendRedirect)的工作原理:

客戶發送一個請求到伺服器,伺服器匹配servlet,這都和請求轉發一樣,servlet處理完之後調用了sendRedirect()這個方法,這個方法是response的方法,所以,當這個servlet處理完之後,看到response.senRedirect()方法,立即向客戶端返回這個響應,響應行告訴客戶端你必須要再發送一個請求,去訪問jsp頁面。

緊接著客戶端收到這個請求後,立刻發出一個新的請求,去請求jsp頁面,這裡兩個請求互不干擾,相互獨立,在前面request裡面setAttribute()的任何東西,在後面的request裡面都獲得不了。可見,在sendRedirect()裡面是兩個請求,兩個響應。

我們再用一張圖片快速理解轉發和重定向

三分鐘看圖學習 快速理解javaweb中轉發和重定向 - 天天要聞

轉發和重定向大家都知道他們的區別是不同的請求次數,地址欄中的地址是否發生變化,是否能訪問web-inf下面的資源和能否訪問外部資源。最重要的一點是是否能共享數據,很多人對此表示疑惑,轉發是如何實現數據共享或者重定向為什麼不支持數據共享的。

下面我們對圖片進行舉例解析

我向班長借是15元錢,班長說沒有(其實是不想借我),班長說小王有,讓我去向小王借錢。沒辦法我只能去找小王借錢,小王很大方直接借我100,說不夠再找他。其實這裡這就是我們講的重定向,大家可以看到,我們是發送了兩次請求的,一次是和班長借錢一次是和小王借錢。

而轉發不同的是我去找班長借錢,班長雖然沒有錢,但是班長說我去給你借錢去,班長去找小王借錢,並把借到的錢給我。相對我來說我只發了一次請求,是發送給班長的,而班長把請求進行了轉發,但是班長和小王都是在本次請求中的。

那何為數據共享呢,大家可以看到,我向班長發送了一個15元的請求數據,班長把15元的請求數據轉發給小王。最後我還錢的時候,我是直接把錢還給班長的,班長再把這一百元發送給小王,而不是我直接還給小王。

班長相當於中間人,起到的作用就是數據的共享和交互。而重定向為什麼不能實現數據共享呢?

首先我向班長發送借錢請求,班長說沒有,請求到這裡就結束了,並沒有發生數據的共享,而我和小王借錢只是簡單的數據交互,不是數據的共享因為和班長沒有任何關係。

這就是我對重定向和轉發內容的總結,希望可以幫助大家理解。

科技分類資訊推薦

長安與東風重組新進展:朱華榮稱不會改變長安既定戰略 - 天天要聞

長安與東風重組新進展:朱華榮稱不會改變長安既定戰略

2月9日,長安汽車和東風集團股份(00489.HK)同步發布了控股股東「正在與其他國資央企集團籌劃重組事項」的信息。長安汽車的控股股東是兵裝集團,而東風集團股份的控股股東是東風公司。隨即,長安汽車和東風集團這兩家汽車央企將合併重組,成為業內關注的焦點。
公安部出手了!年齡限制放寬10年、送考下鄉,2025年考駕照不難了 - 天天要聞

公安部出手了!年齡限制放寬10年、送考下鄉,2025年考駕照不難了

電動車加強管理以後,要求機動車類型的車輛需要持證上路,但是老年人考駕照卻受阻,一方面有年齡的限制,另一方面偏遠山區考駕照不方便,所以在2025年公安部出手了,年齡限制放寬10年,同時推出送考下鄉服務,還進一步的降低考駕照的費用,2025年起考摩托車駕照不難了。
從「星靈安全守護體系」到昊鉑HL,看懂廣汽科技日 - 天天要聞

從「星靈安全守護體系」到昊鉑HL,看懂廣汽科技日

發布會以技術切入,並全程圍繞安全展開。廣汽集團董事長、總經理馮興亞率先登場,宣布2025年四季度將正式上市支持L3級智能駕駛的車型,他同時強調面向自動駕駛時代對智能駕駛技術、整車安全架構以及突發風險處理能力的要求更高。如何才能滿足更高的要求?馮興亞提到了「廣汽
關稅大棒下,最受傷的車企出現了 - 天天要聞

關稅大棒下,最受傷的車企出現了

特朗普的關稅大棒剛揮出,尚未嚇退「外敵」,卻先刺痛了自己。近日,擁有瑪莎拉蒂、Jeep等14個品牌的全球第四大車企斯泰蘭蒂斯突然宣布裁撤900名美國工人,關閉加拿大和墨西哥兩家工廠,北美生產線陷入癱瘓。幾乎同一時間,捷豹路虎宣布暫停對美出口一個月,奧迪更是直接