天天看點

Java Web開發中路徑問題的總結

       用Java開發Web應用時,無論是Jsp頁面、Servlet或是web.xml配置檔案中都涉及到路徑的問題,而這又是初學者較容易混淆的地方,往往不知道如何寫路徑。其實伺服器端和用戶端在處理路徑的方式上不一緻,是以需要根據不同的情況寫出正确的路徑。下面通過例子來說明。

   假設Web應用road中,應用的根路徑下有一個dir1檔案夾和dir2檔案夾。c.jsp在dir1中,a.jsp和b.jsp在dir2中。Web應用的結構如圖所示。

       + root

           -dir1

               c.jsp

           -dir2

               a.jsp

               b.jsp

  1. JSP頁面中正确的路徑表示假設在a.jsp頁面中有兩個連結,分别連結到b.jsp和c.jsp頁面。
    • 直接寫路徑表示和頁面在同一個檔案夾下面,如<a href="b.jsp" target="_blank" rel="external nofollow" >b.jsp</a>
    • "../"表示目前檔案夾的上一級檔案夾(相對路徑),如:     <a href="../dir2/b.jsp" target="_blank" rel="external nofollow" >b.jsp</a>,

           <a href="../dir1/c.jsp" target="_blank" rel="external nofollow" >c.jsp</a>

    • "/"表示 http://機器IP:8080(絕對路徑),如:     <a href="/road/dir2/b.jsp" target="_blank" rel="external nofollow" >b.jsp</a>

           <a href="/road/dir1/c.jsp" target="_blank" rel="external nofollow" >c.jsp</a>

  2. Servlet中正确的路徑表示
    • 轉發請求時:"/"表示“http://伺服器IP:8080/Web應用名”,例如:    String forward = "/dir1/c.jsp";

          RequestDispatcher rd = request.getQRequestDispatcher(forward);

    • 重定向時:“/”  表示“http://機器IP:8080”,而通過request.getContextPath()得到的是:“http://機器IP:8080/Web應用名”,例如:     String str =  request.getContextPath();

           response.sendRedirect(str + "/dir1/c.jsp");

  3. 配置檔案web.xml中   url-mapping中,"/"表示“http://IP位址:8080/Web應用名”

××總結××

  • 在浏覽器端:“/”表示的是一台WEB伺服器,“http://機器IP:8080”
  • 在伺服器端(請求轉發):“/”表示的是一個WEB伺服器端的應用,“http://機器IP:8080/Web應用”
  • 在伺服器端(重定向):“/”表示的是一個WEB伺服器,“http://機器IP:8080”