Servlet跳轉方式sendReDirect()和forward()


在web應用服務中,經常會面對不同SERVLET之間的跳轉,目前我們可以通過以下兩種方式實現:

1.RequestDispatcher.forward()

2.ServletResponse.sendReDirect()

 

兩者的區別:

1.redirect 方式可以跨應用訪問,forward 只能在同一個應用中跳轉。

2.forward 客戶端訪問服務器,服務器找到要跳轉的相應URL並執行返回給客戶端。客戶端的地址欄顯示的是原始URL。

   redirect 客戶端訪問服務器,服務器找到要跳轉的URL並將URL發給客戶端,再由客戶端對新的URL重新發送請求。客

   戶端的地址欄顯示的是第二次請求的URL。

3.數據的傳輸:在request中的數據,forward可以訪問,redirect不行,因為redirect已經是一個新的請求。

 

相對路徑的理解:

forward中"/"相對於web應用.
http://localhost:8080/Test/gw/page.jsp中轉發
  <jsp:forward page="OtherPage.jsp"/>在JSP頁面被解析后轉換成pageContext.forward("OtherPage.jsp");
  "/OtherPage.jsp"提交到http://localhost:8080/Test/OtherPage.jsp
  "OtherPage.jsp"提交到http://localhost:8080/Test/gw/OtherPage.jsp
  
  <form action="/ddd"> 和 response.sendRedirect("/ddd"); 相對於服務器根路徑.
  假設轉發代碼包含於注冊的servlet-url為/ggg/tt;jsp為/ggg/tt.jsp:
  絕對路徑:response.sendRedirect("http://www.brainysoftware.com")發送http://www.brainysoftware.com
  根路徑:response.sendRedirect("/ooo")發送至http://localhost:8080/ooo
  相對路徑:response.sendRedirect("ooo")發送至http://localhost:8080/Test/ggg/ooo


免責聲明!

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



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