1. 程式人生 > 實用技巧 >servlet內部轉發與重定向

servlet內部轉發與重定向

學了倆三天的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應用中的元件 重定向可以指向任何的資源,包括當前應用程式中的其他資源,同一個站點上的其他應用程式中的資源,其他站點的資源