1. 程式人生 > >JavaWeb專案中的絕對路徑與相對路徑問題

JavaWeb專案中的絕對路徑與相對路徑問題

最近在做JavaWeb專案,總是出現各種的路徑錯誤,而且發現不同情況下 /  所代表的含義不同,導致在除錯路徑上浪費了大量時間。

在JavaWeb專案中儘量使用絕對路徑  因為使用絕對路徑是絕對不會出錯的,而使用相對路徑可能會出現錯誤。

首先 說下在JavaWeb專案中的絕對路徑和相對路徑的含義

相對路徑: 相對於當前目錄的路徑為相對路徑 通常直接用/ 來表示

因為使用相對路徑 中的 / 在JavaWeb中的含義在不同的情況下含義不同,所以使用相對路徑時可能會出現問題

下面就分析 / 在JavaWeb含義

JavaWeb專案中 /  的不同含義

JavaWeb專案中的 / 可能表示如下含義

有以下情況

> 請求轉發時  

  1. request.getRequestDispatcher("/message/a.jsp").forward(request,response);  
>  web.xml 檔案中對映Servlet 訪問路徑
  1. <servlet-mapping>  
  2.    <servlet-name>UserServlet</servlet-name>  
  3.    <url-pattern>/UserServlet</url-pattern>  
  4.  </servlet-mapping>  

> 各種定製標籤中的 /

有以下情況

> 超連結

  1. <a href=""></a>  
> 表單中的action
  1. <form action="" method="post"></form>  
> 請求重定向的時候
  1. response.sendRedirect("");  

綜合上述情況,我們應該在web專案開發中使用絕對路徑也就是應該帶上contextPath

而contextPath可以由request.getContextPath 或者 application.getContextPath 來獲取

所以當遇到超連結  表單中的action 或者 請求重定向的時候,應該在其前面加上contextPath 而不能直接使用相對路徑 / 

為了保險起見,大家對專案中出現任何的訪問路徑,比如css 或者js程式碼的呼叫的路徑都可以使用絕對路徑來防止出現問題