2014-11-13 34 views
3

這兩條代碼行有什麼不同,我們應該在什麼時候使用它們?Servletcontext的RequestDispatcher與請求

1.

RequestDispatcher view = request.getRequestDispatcher(「result.jsp」); 

2.

RequestDispatcher view = getServletContext().getRequestDispatcher(「/result.jsp」); 
+0

在這種情況下什麼是「VS」?我猜不是Visual Studio。 –

回答

4

1)RequestDispatcher view = request.getRequestDispatcher(「result.jsp」);

這裏,

  • 視圖是相對於當前請求。您必須傳遞jsp/html的相對路徑,以便在同一個Web應用程序中鏈接兩個Servlet。

java doc說,

指定可以是相對的,儘管它不能在當前servlet上下文外側延伸 的路徑名。如果路徑以「/」開始,則它被解釋爲相對於當前上下文根。如果servlet容器不能返回 RequestDispatcher,則此方法 將返回null。

此方法與 ServletContext.getRequestDispatcher(java.lang.String)的區別在於,此 方法可以採用相對路徑。

2)RequestDispatcher view = getServletContext()。getRequestDispatcher(「/ result.jsp」);

這裏,

  • 的觀點是相對於servlet上下文的根,你必須通過JSP/HTML
  • 的絕對路徑在相同/不同的服務器鏈接兩個Web應用程序。

java doc說,

路徑名必須以「/」開始並且被解釋爲相對於 當前上下文根。使用getContext爲外部上下文中的資源獲取RequestDispatcher 。如果 ServletContext無法返回RequestDispatcher,則此方法返回null。