getRequestDispatcher 中請求轉發和請求包含的使用說明


getRequestDispatcher()

getRequestDispatcher() 包含兩個方法,分別是請求轉發和請求包含。

RequestDispatcher rd = request.getRequestDispatcher("/MyServlet");
rd.forward(request, response);  // 請求轉發
rd.include(request, response);  // 請求包含
  • 請求轉發:當前Servlet可以設置響應頭,由下一個Servlet完成響應體,下一個Servlet輸出響應體后,當前Servlet不可以繼續輸出!(留頭不留體)
  • 請求包含:當前Servlet可以設置響應頭,由兩個Servlet共同完成響應體,下一個Servlet輸出響應體后,當前Servlet可以繼續輸出!(留頭又留體)

無論是請求轉發還是請求包含,都在一個請求范圍內!使用同一個request和response。

請求轉發和重定向的區別

  • 請求轉發只有一次請求和一次響應,重定向有兩次請求和兩次響應。
  • 請求轉發地址不發生改變,重定向會跳轉到后一個請求的地址。
  • 請求轉發只能轉發到本項目的其它Servlet,重定向不只能重定向到本項目的其它Servlet,還能重定向到其它項目。
  • 請求轉發是服務端行為,只需給出轉發的Servlet路徑,重定向需要給出requestURI,既包含項目名。

請求值傳遞

同一個請求范圍內可以使用request.setAttribute()和request.getAttribute()來相互傳值。前一個Servlet調用setAttribute()保存值,后一個Servlet調用getAttribute()獲取值。


免責聲明!

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



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