Java占位符:对webapp文件夹的引用

时间:2013-01-29 14:20:12

标签: java web-applications file-upload location classpath

我正在构建一个用于上传内容的网络应用程序。目前,我正在使用一个属性文件,我在其中定义了一些变量,其中包含我希望存储文件的某些文件夹的路径。这些路径指的是我文件系统中的文件夹。

P1:由于我想让我的应用程序更具可移植性,我决定将上传的内容存储在项目类路径中的某个文件夹中,但我在占位符中使用的路径不起作用。

#path.images=C:/uploads/images    

#path.images=classpath:/webapp/uploads/images     (NOT working)

Q1:如果可能的话,我想知道我是否将内容存储在正确的位置(在 webapp 目录中)。

注意:我正在进行这些更改,因为我正在尝试将FileInputStream替换为getResourceAsStream()

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

没有;未与应用程序一起部署的资产应存储在其他位置。

通常这类资产属于可配置的外部目录。配置机制包括JNDI,context / init参数,环境变量或系统变量。

由于多种原因,将资产保留在Web应用程序中是一个坏主意,最大的原因是:

  1. 如果将应用程序部署为war文件,则无论如何都无法写入war文件,并且
  2. 您的资产受到部署机制的支配,可能会被覆盖。
  3. 将它们保存在一个已知良好的位置,然后将它们流回,通过容器配置访问权限,或使用任何各种CDN机制来提供访问权限。

答案 1 :(得分:0)

您无法在类路径中存储数据 - 它是只读的。

为了获得最大的可移植性,您应该避免将数据存储在文件系统中(例如,在集群方案中,您需要确保所有节点上的文件系统相同)。