我正在使用JSP和Servlets工作。我希望在我的服务器上有一个XML文件,而不是拥有一个数据库。我想保存用户在我的项目中的XML文件中提供的信息,这些信息保存在我如何在我的代码中定义这样的路径?
我的Servlet位于Project/src/servletPackage/myServlet.java
下,XML文件目前位于Project/WebContent/file.xml
下。路径 NOT 应为:C:/eclispe/workspace/Project/WebContent/file.xml
这只有在从主计算机访问网页时才有效。在其他计算机上,它在用户的计算机上创建一个目录
答案 0 :(得分:0)
我想保存用户在项目中的XML文件中提供的信息
如果您想要这样做,请使用
File infoFile = new File(getServletContext().getRealPath("/file.xml"));
答案 1 :(得分:0)
您可以使用类加载器访问存储在应用程序类路径中的资源。 您可以将xml放在WEB-INF / classes或服务器中配置的其他文件夹中作为类路径的一部分,并使用方法classLoader.getResourceAsStream来获取读取文件的Inputflow。
Here's and example如何以这种方式加载属性文件。
请注意,此解决方案仅在您的servlet部署在一个servler中时才有效,如果您在集群或多服务器环境中工作,这些文件将不会被服务器共享。
如果您需要共享文件,将它们放在共享文件夹中,并避免对代码中的绝对路径进行硬编码,请使用servlet init参数指向存储文件夹的根目录,如下所示。
<web-app>
<servlet>
<servlet-name>MyServletName</servlet-name>
<servlet-class>com.mycompany.MyServlet</servlet-class>
<init-param>
<param-name> storagefolder</param-name>
<param-value>/var/opt/sun/appserver/sharedstoragefolder</param-value>
</init-param>
...
</servlet>
...
</web-app>
希望得到这个帮助。
答案 2 :(得分:0)
您可以将XML放在项目的类路径中,并以ResourceStream的形式访问它。在eclipse中,一个简单的方法是在源代码文件夹中创建一个包并在那里添加你需要的文件:
Project
+ src
+ com.mycompany.bean
- Bean1.java
- Bean2.java
...
+ xml
- file.xml
从Bean1类访问文件
public class Bean1 {
public void accessResourceFile() {
InputStream xmlFile = Bean1.getClass().getResourceAsStream("xml/file.xml");
//do what you want/need with the file...
}
}
另一个例子: