JavaWeb專案中的絕對路徑與相對路徑問題
阿新 • • 發佈:2019-01-08
最近在做JavaWeb專案,總是出現各種的路徑錯誤,而且發現不同情況下 / 所代表的含義不同,導致在除錯路徑上浪費了大量時間。
在JavaWeb專案中儘量使用絕對路徑 因為使用絕對路徑是絕對不會出錯的,而使用相對路徑可能會出現錯誤。
首先 說下在JavaWeb專案中的絕對路徑和相對路徑的含義
相對路徑: 相對於當前目錄的路徑為相對路徑 通常直接用/ 來表示
因為使用相對路徑 中的 / 在JavaWeb中的含義在不同的情況下含義不同,所以使用相對路徑時可能會出現問題
下面就分析 / 在JavaWeb含義
JavaWeb專案中 / 的不同含義
JavaWeb專案中的 / 可能表示如下含義
有以下情況
> 請求轉發時
- request.getRequestDispatcher("/message/a.jsp").forward(request,response);
- <servlet-mapping>
- <servlet-name>UserServlet</servlet-name>
- <url-pattern>/UserServlet</url-pattern>
-
</servlet-mapping>
> 各種定製標籤中的 /
有以下情況
> 超連結
- <a href=""></a>
- <form action="" method="post"></form>
- response.sendRedirect("");
綜合上述情況,我們應該在web專案開發中使用絕對路徑也就是應該帶上contextPath
而contextPath可以由request.getContextPath 或者 application.getContextPath 來獲取
所以當遇到超連結 表單中的action 或者 請求重定向的時候,應該在其前面加上contextPath 而不能直接使用相對路徑 /
為了保險起見,大家對專案中出現任何的訪問路徑,比如css 或者js程式碼的呼叫的路徑都可以使用絕對路徑來防止出現問題