2009-08-11 51 views
1

我想向我的Java ee項目添加一個xml文件,並在我的代碼中使用它,但是當我從src目錄尋址文件時,它不理解我的地址並在tomcat的bin目錄中搜索文件。 我的項目使用了檢票框架和JavaEE。 是否有人知道如何解決該文件或我應該在哪裏放置文件以訪問來自項目?如何將文件添加到Java EE項目?

回答

1

如果你的XML文件,必須只訪問服務器端的資源,那麼最好的選擇是將它放在WEB-INF目錄下你的戰爭中,還是在WEB-INF裏面的一些子目錄。通過這種方式,您可以確保網絡無法訪問資源。

然後你就可以使用ServletContext.getResource檢索,由彼得·指出

例如,在一個servlet,你可以找回這種方式(處理省略除外):

String path = "/WEB-INF/my.xml"; 
URL url = getServletConfig().getServletContext().getResource(path); 
InputStream in = url.openStream(); 
// read content from input stream... 
0

裏面你的servlet,您可以:

this.getServletContext().getResource(path); 

public java.net.URL getResource(java.lang.String path) 
         throws java.net.MalformedURLException 

返回一個URL映射到指定路徑的資源。該路徑必須以「/」開頭,並解釋爲相對於當前上下文根。

此方法允許servlet容器爲任何來源的servlet提供資源。資源可以位於本地或遠程文件系統,數據庫或.war文件中。

servlet容器必須實現訪問資源所需的URL處理程序和URLConnection對象。

如果沒有資源映射到路徑名,此方法返回空值。

某些容器可能允許使用URL類的方法寫入由此方法返回的URL。

資源內容是直接返回的,因此請注意請求.jsp頁面返回JSP源代碼。而是使用RequestDispatcher來包含執行結果。

此方法與java.lang.Class.getResource不同,它根據類加載器查找資源。此方法不使用類加載器。

+1

給予信貸/鏈接到期的地方:http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContext。html#getResource(java.lang.String) – 2009-08-11 13:13:18

+0

它的JEE,我們是否真的需要說明它來自哪裏?答案是有幫助和相關的,不會降低downvote – djna 2009-08-11 13:26:51

+0

,但它只是從源代碼複製並粘貼,沒有任何參考。 – 2009-08-11 15:17:43

0

通常src在運行時不使用。我不使用tomcat,但在我的環境中,我構建了將非Java文件從src複製到bin目錄的任務。

您可能會發現需要使用類加載器getResourceAsStream()來打開文件,以便您可以搜索與類相同的目錄。

這假定您想要在應用程序中提供XML 。或者,您可能更喜歡將它放在其他地方。 URI資源引用可能有所幫助

0

爲什麼不把XML文件放在資源目錄中。你可以從任何類訪問它:

MyClass.class.getClassLoader()。getResourceAsStream(filename);

相關問題