請求轉發和重定向的區別以及他們的實現方式?


1.請求轉發是什么?

答:請求轉發是RequestDispatcher.forword方法;作用是:在服務器端內部將請求轉發給另一個資源,瀏覽器只知道發出請求並得到響應結果,但不知道在服務器程序內部發生了轉發行為。

舉例:別名為“瀏覽器”的人寫信找張三100塊,張三只有50塊,於是張三找李四借了50塊,然后將錢轉給“瀏覽器”。可知,“瀏覽器”只發出一封信和收到一次回復,他只知道錢是張三借給他的,並不知道有一部分是李四的。

2.重定向是什么?

答:重定向是HttpServletResponse.sendRedirect方法;作用:是對瀏覽器的請求直接作出響應,響應的結果就是告訴瀏覽器去重新發出對另外一個URL的訪問請求。

舉例:別名為“瀏覽器”寫信給張三借錢,張三回信說沒錢,讓“瀏覽器”找李四借錢,並將李四的通訊地址告訴“瀏覽器”;於是“瀏覽器”按張三提供的信息給李四寫信借錢,李四收到信后轉錢給“瀏覽器”。可知,“瀏覽器”一共發了兩封信和受到兩次回復,“瀏覽器”也知道借錢給他的是李四。

3.請求轉發和重定向的區別?

答:可分為五大區別:

3.1 目標應用和目錄

請求轉發方法只能將請求轉發給同一個WEB應用中的組件;而重定向方法不僅可以重定向到當前應用程序中的其他資源,還可以重定向到同一個站點上的其他應用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源。

如果傳遞給重定向方法的相對URL以“/”開頭,它是相對整個WEB站點的根目錄;如果創建請求轉發對象是指定的相對URL以“/”開頭,它是相對當前WEB應用程序的根目錄。

3.2 瀏覽器地址

調用請求轉發方法進行請求轉發的訪問過程結束后,瀏覽器地址欄保持初始的URL地址不變;而調用重定向方法進行重定向的訪問過程結束后,瀏覽器地址欄的URL會發生改變,由初始的URL變成重定向的目標URL。

3.3 請求響應過程

請求轉發方法的調用者和被調用者之間共享相同的request對象和response對象,它們屬於同一個請求和響應的過程。而重定向方法的調用者和被調用者使用的是各自的request對象和response對象,它們屬於兩個獨立的訪問請求和響應過程。

3.4 使用場景

對於同一個WEN應用程序的內部資源之間的跳轉,特別是跳轉之前要對請求進行一些前期的預處理,並要使用HttpServletRequest.setAttribute方法傳遞預處理結果,則用請求轉發方法;對於不同WEB應用程序之間的重定向,特別是要重定向到另外一個WEB站點上的資源的時候,都應該用重定向方法。

3.5 客戶端

無論是請求轉發還是重定向,在調用它們之前,都不能有內容已經被實際輸出到了客戶端。如果緩存區中已經有了一些內容,則這些內容將被從緩存區中清除。

3.6 實現方式

3.6.1 在servlet中調用請求轉發,重定向的語句如下:

request.getRequestDispatcher("new.jsp").forword(request,response);//請求轉發到new.jsp

response.sendRedirect("new.jsp");//重定向到new.jsp

3.6.2 在jsp頁面中調用請求轉發,重定向的語句如下;

<jsp:forword page="new.jsp"/>//請求轉發到new.jsp

<%response.sendRedirect("new.jsp");%>//重定向到new.jsp

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM