2009-08-11 75 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);

相关问题