在Struts2的實際使用中,經常會在jsp視圖頁面中引入CSS和javascript,這就涉及到引用路徑問題。路徑有兩種,一種是相對路徑,另一種是絕對路徑。我們分別來說說在Struts2的整頁模式中他們的影響。 1、相對路徑
相對路徑的引用格式如下:
<script src="resources/scripts/jquery-ui-1.8.custom.min.js" type="text/javascript"></script>
注意在這裡,最開始的路徑前面直接跟檔案夾路徑,沒有“/”,這是HTML中相對路徑的引用方法,在普通HTML靜態頁面的伺服器環境中,指的是相對於當前HTML檔案的路徑。
但是,在Struts2的伺服器環境下,這個相對路徑卻被解釋為相對於該struts2部署項目根目錄的路徑。
2、絕對路徑
絕對路徑的引用格式如下:
<script src="/resources/scripts/jquery-ui-1.8.custom.min.js" type="text/javascript"></script>
絕對路徑在最前面有一個“/”,這是HTML中絕對路徑的引用方法,在普通HTML靜態頁面的伺服器環境中,指的是相對於改部署項目的根目錄(一般是Web伺服器如Apache或Tomcat的設定檔中WebRoot)的路徑。
但是,在Struts2的伺服器環境下,直接被解釋為伺服器的頂級目錄。
需要注意的是,不管相對路徑還是絕對路徑,都與你當前包含“<script src="/resources/scripts/jquery-ui-1.8.custom.min.js" type="text/javascript"></script>”的jsp分頁檔的路徑無關。這與普通伺服器環境下靜態HTML檔案的相對、絕對路徑是不同的。
舉個例子大家就能夠更簡單的理解以上兩種情況
例如我現在使用Eclipse建立了一個名為Struts的Web項目。而我現在使用的jsp分頁檔是放在Struts項目下的WebRoot/module/gjtj/admin/jsp這個目錄下的。我在這個jsp頁面中分別進行兩個引用:
<script src="module/gjtj/admin/jsp/resources/scripts/smooth.dialog.js" type="text/javascript"></script><script src="/module/gjtj/admin/jsp/resources/scripts/smooth.autocomplete.js" type="text/javascript"></script>
則第一個會被伺服器解釋為如下URL:
localhost:8080/Struts/module/gjtj/admin/jsp/resources/scripts/smooth.dialog.js
第二個會被伺服器解釋為如下URL:
localhost:8080/module/gjtj/admin/jsp/resources/scripts/smooth.autocomplete.js
中間差了一個該項目的名稱Struts。而且兩個被解釋的路徑都有當前的jsp頁面的路徑沒有任何的關聯。
一點提示Tips:
如果你想在Struts2的整頁模式中使用已有的頁面模板或者樣式(我這裡的例子就是使用的smooth後台系統管理範本),你需要注意:這些第三方的摸樣或者樣式中都是使用相對路徑進行進行樣式和指令碼的包含,但是這些在Struts2的環境下卻被解釋為相對項目名稱的路徑,會出現樣式、指令碼路徑不正確的問題。建議你最好把這些資源檔放在專案檔下的根目錄WebRoot下,這樣可以使用所謂的“相對路徑”
resources/scripts/smooth.dialog.js
即可正確的載入資源檔。