【发布时间】:2021-08-24 08:03:07
【问题描述】:
我的 Eclipse web-app 项目中有一个 java 类,它生成一个 XML 文件。此 xml 文件将用于通过 AJAX 调用在 JSP 页面中显示其内容。假设我想导出项目并将其发送给另一个用户,然后该用户将在另一台 PC 上使用它。即使我不知道它在新计算机上的路径,如何在项目目录中创建 xml 文件?
【问题讨论】:
我的 Eclipse web-app 项目中有一个 java 类,它生成一个 XML 文件。此 xml 文件将用于通过 AJAX 调用在 JSP 页面中显示其内容。假设我想导出项目并将其发送给另一个用户,然后该用户将在另一台 PC 上使用它。即使我不知道它在新计算机上的路径,如何在项目目录中创建 xml 文件?
【问题讨论】:
大多数 Java 项目都有标准化的项目结构。 例如Maven 如下所示:
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- mycompany
| | `-- app
| | `-- App.java
| `-- resources
|
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
在本地运行时,Java 应用程序将使用相对路径创建的文件将从资源文件夹中读取(当然,这可以在 Eclipse 的运行时环境中进行配置,或者在 java/javac CLI 命令中进行调整)。 请注意,打包的 Java 程序无法写入打包的 JAR 或 WAR 文件。因此,在创建 JAR/WAR 时,您可以嵌入静态内容,但编写不起作用。因此,当您运行 JSP 页面时,类加载开始发挥作用。不同的用途在服务器端被沙盒化到它们自己的上下文中。因此,总体而言,共享相同的文件和/或磁盘空间可能不是一个好主意。
当您有文件数据库或类似文件时,您应该有一个服务器配置变量来将路径设置为您的服务器上使用的值。 JSP 环境中的完整配置在 web.xml 文件中处理: https://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html
顺便说一句,这是 J2EE 容器的标准方式。
如果您有一个本地项目而不是完全成熟的生产环境,最简单的选择可能是读出一个环境变量,其中包含您想在您的机器上使用的本地路径。
请注意,如果您想从 J2EE 容器(=运行 JSP 的软件)写入文件,则可能需要在 Tomcat/Glassfish/Wildfly/...中设置安全规则。
【讨论】:
一种方法是将路径作为系统属性 -Dproperty=value 传递(例如 java -DxmlDir="C:\xml" SomeClass)。在 Eclipse 上,您可以在运行配置中添加它,然后我认为它是在参数或环境中。要访问该属性,只需执行System.getProperty("xmlDir")。在新计算机上,他们可以指定 XML 文件所在的位置。
【讨论】: