我試圖從JSP文件中的JavaScript庫中使用JavaScript函數在Web瀏覽器頁面上顯示結果,但似乎包含內容無效。在JSP文件中包含JavaScript庫
我居然把對應於WEB-INF文件夾中的庫的.js文件和JSP文件中添加以下行包括在它:
<script type="text/javascript" src="./jsgl.min.js"></script>
我成功設法在簡單的HTML文件中使用庫,這就是爲什麼我不明白爲什麼這不起作用。
編輯:
我試圖從JSP文件中的JavaScript庫中使用JavaScript函數在Web瀏覽器頁面上顯示結果,但似乎包含內容無效。在JSP文件中包含JavaScript庫
我居然把對應於WEB-INF文件夾中的庫的.js文件和JSP文件中添加以下行包括在它:
<script type="text/javascript" src="./jsgl.min.js"></script>
我成功設法在簡單的HTML文件中使用庫,這就是爲什麼我不明白爲什麼這不起作用。
編輯:
TLDR
將JS文件的文件夾中下的網頁內容(但不 WEB-INF)等[的WebContent] /js/jsgl.min.js,並使用在JSP以下:
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jsgl.min.js"></script>
說明
JSP文件由服務器編譯,然後處理以將數據(通常是HTML)發送回網絡瀏覽器。 A <script>
標記是由瀏覽器解釋的HTML標記,而不是由servlet容器解析。因此,瀏覽器發現在HTML中,向src
屬性中的JavaScript文件的服務器發出了一個新請求。
src屬性是相對於瀏覽器請求的URL而不是服務器上的JSP路徑。
因此,作爲一個例子,讓我們說:
http://example.com/SomeWebApp/some-resource
/WEB-INF/jsp/somepage.jsp
<script type="text/javascript" src="./jsgl.min.js"></script>
(如在你的問題)./jsgl.min.js
並解決它相對於它的URL 它s詢問服務器(在本例中爲http://example.com/SomeWebApp/some-resource
- 注意沒有結尾'/'),因此瀏覽器將從http://example.com/SomeWebApp/jsgl.min.js
*請求JS文件。這是因爲腳本標籤的src屬性中的相對URL以'。'開頭。另一個答案建議將JS文件放入'js'文件夾並將腳本標記更改爲<script type="text/javascript" src="/js/jsgl.min.js"></script>
。使用與上例中相同的原始頁面URL,瀏覽器會將此src URL轉換爲http://example.com/js/jsgl.min.js
。請注意,這裏缺少「/ SomeWebApp」上下文路徑。
因此,最好的解決方案確實是把JS文件中像/js/jsgl.min.js靜態的文件夾,但使用的JSP腳本標籤以下內容:
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jsgl.min.js"></script>
將JSP將${pageContext.request.contextPath}
位翻譯成當前上下文路徑,使代碼具有可移植性(如果您重新部署具有不同上下文路徑的Web應用程序,它仍然可以工作)。因此,通過瀏覽器接收HTML響應將(再次,與上面的例子粘):
<script type="text/javascript" src="/SomeWebApp/js/jsgl.min.js"></script>
瀏覽器現在將解決相對URL到正確的目標。
__
*如果原始URL有一個斜線=即是http://example.com/SomeWebApp/some-resource/
,JS的URL會http://example.com/SomeWebApp/some-resource/jsgl.min.js
靜態資源應該在WEB-INF文件夾外把(如你通常不允許其內容的web訪問)。
你可以把文件下的webapp/JS /,然後改變你的腳本進口:
<script type="text/javascript" src="/js/jsgl.min.js"></script>
除了是很好的做法,這是件好事,因爲它相對於JSP的位置不文件。
Files in WEB-INF are inaccessible.
你可以把它們放在webapp下,並嘗試訪問如上所述。
是在'src'正確的路徑?那是真正的JavaScript文件的位置?也許檢查文件的名稱是正確的,作爲完整性檢查。 – mohammedkhan
你試過嗎?src =「/ WebContent/js // jsgl.min.js」 – Rupesh
@Rupesh是的,它既不工作也不工作 – Neo