servlet內部轉發與重定向
阿新 • • 發佈:2020-10-26
學了倆三天的servlet的內部轉發和重定向,今天利用一點時間將servlet的內部轉發和重新向進行一個大概總結,由於本人也是初學階段,如有不對,望諒解!並希望私信我及早改正,希望能幫到大家。
首先,先將二者的語法背一下,不管會不會用,先記下語法是沒錯滴!!!
轉發:
httpServletRequest.getRequestDispatcher("資源路徑").forward(httpServletRequest, httpServletResponse);
重定向:
httpServletResponse.sendRedirect("/資源路徑");
目的:
二者都是用來實現頁面跳轉,給客戶端一個響應。
區別:
雖然二者都是用來實現頁面跳轉,給客戶端一個響應。但是其中還是有很大的差別的,這裡就和大家一起探討下二者原理及不同。
一:原理
servlet的轉發
1.請求原理圖如下所示:
2.可以簡單理解重定向就好比一個人去向A這個人借錢,但是A沒有錢,這時候A告訴你B有錢,然後你自己去跑B家去找B借錢
2.可以簡單理解轉發就好比一個人去向A這個人借錢,但是A沒有錢,所以A又跑去找B這個人借錢,然後把借來的錢再借給你了。
二:特點
內部轉發 | 重定向 |
轉發是伺服器行為(這是不經過瀏覽器的) | 重定向是客戶端行為。(瀏覽器重新請求)。 |
轉發是瀏覽器只做了一次訪問請求 | 重定向是瀏覽器做了至少兩次的訪問請求的(當然也可以重定向多次)。 |
轉發瀏覽器地址不變 | 定向瀏覽器地址改變。 |
轉發兩次跳轉之間傳輸的資訊不會丟失,所以可以通過request進行資料的傳遞 | 重定向兩次跳轉之間傳輸的資訊會丟失(request範圍) |
轉發只能將請求轉發給同一個WEB應用中的元件 | 重定向可以指向任何的資源,包括當前應用程式中的其他資源,同一個站點上的其他應用程式中的資源,其他站點的資源 |