1. 程式人生 > >Java Web中的相對路徑與絕對路徑總結

Java Web中的相對路徑與絕對路徑總結

-webapp 
|-MyProject  目錄 
 |--WebContent 目錄
  |---scripts 目錄
   ---dtree.js 檔案
  |---styles 目錄
   ---main.css 檔案 
  |---pages 目錄
   ---test.jsp 檔案
 
現在例如要在test.jsp中引用scripts目錄下的dtree.js和styles目錄下的main.css
 
有如下幾種方法:
 
1.使用相對於jsp頁面的相對路徑
Html程式碼 [url=http://javatechnology.javaeye.com/blog/577469#][/url]
  1. <link type="text/css" rel="stylesheet" href="../styles/main.css" />
      
  2. <script type="text/javascript" src="../scripts/dtree.js"></script>  
<link type="text/css" rel="stylesheet" href="../styles/main.css" /><script type="text/javascript" src="../scripts/dtree.js"></script>

這樣在頁面使用http://localhost:8080/MyProject/test.jsp訪問test.jsp時就可以引用到dtree.js和main.css。

2.使用相對於Web工程的相對路徑

對於1中的相對使用相對於於jsp頁面的相對路徑的這種方式,如果我們是設定action跳轉到test.jsp頁面,那麼這種使用相對路徑的方式就引用不到了。
例如我們當訪問http://localhost:8080/MyProject/main.do的時候,頁面跳轉到test.jsp頁面,如果使用方法1,就引用不到了。
這個時候我們可以使用相對於Web工程的相對路徑來引用: 
Html程式碼 [url=http://javatechnology.javaeye.com/blog/577469#][/url]
  1. <link type="text/css" rel="stylesheet" href="styles/main.css" />
      
  2. <script type="text/javascript" src="scripts/dtree.js"></script>  
<link type="text/css" rel="stylesheet" href="styles/main.css" /><script type="text/javascript" src="scripts/dtree.js"></script>

但是請注意:使用方法2這種方式引用,如果直接訪問http://localhost:8080/MyProject/test.jsp,是引用不到的。

3.使用Web工程的絕對路徑
方法1和方法2都有缺點,都只適用一種情況,有沒有兩種情況都適用的呢?答案肯定的!
我們使用絕對路徑:
Html程式碼 [url=http://javatechnology.javaeye.com/blog/577469#][/url]
  1. <link type="text/css" rel="stylesheet" href="/MyProject/styles/main.css" />  
  2. <script type="text/javascript" src="/MyProject/scripts/dtree.js"></script>  
<link type="text/css" rel="stylesheet" href="/MyProject/styles/main.css" /><script type="text/javascript" src="/MyProject/scripts/dtree.js"></script>

這樣,不管是通過http://localhost:8080/MyProject/main.do跳轉訪問test.jsp還是直接訪問http://localhost:8080/MyProject/test.jsp,都可以成功引用。

注意:如果我們在部署Web應用時,沒有設定Context Root(一般情況下配置為工程名),也就是IP和埠後面不帶應用名,如http://localhost:8080/main.do和http://localhost:8080/test.jsp,這種情況在引用時就不能帶工程名了,應該這樣:

Html程式碼 [url=http://javatechnology.javaeye.com/blog/577469#][/url]
  1. <link type="text/css" rel="stylesheet" href="/styles/main.css" />  
  2. <script type="text/javascript" src="/scripts/dtree.js"></script>  
<link type="text/css" rel="stylesheet" href="/styles/main.css" /><script type="text/javascript" src="/scripts/dtree.js"></script>