1. 程式人生 > >struts2下,jsp檢視頁面中CSS和javascript引用相對路徑和絕對路徑問題。

struts2下,jsp檢視頁面中CSS和javascript引用相對路徑和絕對路徑問題。

在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頁面中分別進行兩個引用:

則第一個會被伺服器解釋為如下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下,這樣可以使用所謂的“相對路徑”

即可正確的載入資原始檔!