0

我正在使用 JSP 和 Servlet 开发一个网站。我不想拥有数据库,而是想在我的服务器上拥有一个 XML 文件。我想将用户提供的信息保存在我的项目中的 XML 文件中,该文件保存在如何在我的代码中定义这样的路径?

我的 Servlet 在下面Project/src/servletPackage/myServlet.java,XML 文件当前在Project/WebContent/file.xml. 路径不应如下C:/eclispe/workspace/Project/WebContent/file.xml

这确实有效,但仅当从主计算机访问网页时。在其他计算机上,它会在用户计算机上创建一个目录

4

3 回答 3

0

我想将用户提供的信息保存在我项目中的 XML 文件中

如果那是您想要做的,那么使用

File infoFile = new File(getServletContext().getRealPath("/file.xml"));
于 2012-08-09T14:25:30.507 回答
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...
    }
}

另一个例子:

于 2012-08-09T15:45:30.490 回答
0

您可以使用类加载器来访问存储在应用程序类路径中的资源。您可以将您的 xml 作为类路径的一部分放在服务器中配置的 WEB-INF/classes 或其他文件夹中,并使用方法 classLoader.getResourceAsStream 获取 Inputflow 来读取文件。

是如何以这种方式加载属性文件的示例。

请注意,此解决方案仅在您的 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>

希望这有帮助。

于 2012-08-09T14:31:05.380 回答