簡體   English   中英

如何從Web存檔的WEB-INF目錄加載資源

[英]How to load a resource from WEB-INF directory of a web archive

我有一個Web檔案,文件放在WEB-INF目錄中。

如何在java類中加載該文件?

我知道我可以將它放在classes目錄中並從那里加載它。 它只會被放在WEB-INF中。

在ServletContext對象上使用getResourceAsStream()方法,例如

servletContext.getResourceAsStream("/WEB-INF/myfile");

如何獲得對ServletContext的引用取決於您的應用程序...您想從Servlet還是從JSP中執行此操作?

編輯:如果你在Servlet對象中,那么調用getServletContext() 如果您在JSP中,請使用預定義的變量application

以下是它對我的工作原理,沒有使用Servlet。

假設我正在嘗試訪問project / WebContent / WEB-INF / web.xml中的web.xml

  1. 在項目屬性Source-tab中,通過指向WEB-INF文件夾的父容器(在我的WebContent中)添加源文件夾

  2. 現在讓我們使用類加載器:

     InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml") 

我訪問我在java(jersey)服務器中創建的sqlite db文件的問題完全歸結為路徑。 一些文檔說jdbc connect url應該看起來像“jdbc:sqlite://path-to-file/sample.db”。 我認為雙斜杠是htt協議風格路徑的一部分,並且在部署時會正確映射,但實際上,它是絕對路徑或相對路徑。 因此,當我將文件放在WebContent文件夾(tomcat項目)的根目錄下時,像這樣的uri工作“jdbc:sqlite:sample.db”。

拋出我的一件事是,當我踩過調試器時,我收到一條消息,上面寫着“打開db:......權限被拒絕”。 我認為這是文件系統權限或sql用戶權限的問題。 在發現SQLite沒有像MySQL這樣的角色/權限的概念之后,我最終改變了文件權限,然后才得出我認為正確的解決方案,但我認為這只是一個壞消息(即權限被拒絕,而不是找不到文件)。

希望這有助於某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM