gpt4 book ai didi

每当我安装新的 war 文件时,Tomcat 下载文件夹为空

转载 作者:行者123 更新时间:2023-11-28 22:09:14 25 4
gpt4 key购买 nike

我对 Tomcat 的了解足以对我自己和他人造成危险。

为了部署,我创建了一个 WAR 文件(从 Eclipse 导出),然后将该 WAR 文件复制到\apache-tomcat-7.0.23\webapps\文件夹,然后使用\apache-tomcat-7.0.23\bin 重新启动\启动.bat.

我的 webapp 将 PDF 文件写入下载文件夹,据我所知,该文件夹必须位于我的 Eclipse 项目的 WebContent 文件夹中。

问题是,当我安装一个新的 WAR 文件时,当 Tomcat 解压缩它时,它会清除下载文件夹的内容,因此用户之前的输出会丢失。

提前感谢您的时间和帮助。

最佳答案

我认为,将用户文件保存到 Web 应用程序的 WebContent 文件夹中是不正确的(至少,不是很方便)。 WebContent 文件夹用于存放分布在 Web 应用程序存档中的资源。

通常的做法是将磁盘上的某个特定位置用于计划重复使用的用户文件

1) 要在配置文件中指定位置,请在应用程序 CLASSPATH 的根目录中创建文件 app.properties。在此文件中,您将拥有属性

user.pdfs.location=/path/to/user/pdfs

要读取该属性,请在您的 servlet 中使用以下代码:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream propsStream = classLoader.getResourceAsStream("app.properties");

Properties properties = new Properties();
properties.load(propsStream);

String userPdfsPath = properties.getProperty("user.pdfs.location");

因此,您始终可以在已创建的 WAR 中的“/WEB-INF/classes/app.properties”文件中更改 PDF 的位置。

2) 或者您可以将参数传递给 Tomcat 的 JVM:

-Duser.pdfs.location="/path/to/user/pdfs"

要读取参数的值,请使用以下代码:

String userPdfsPath = System.getProperty("user.pdfs.location");

另一种流行(但并非总是正确)的方法 是将文件作为 BLOB 保存到数据库中。考虑到在这种情况下,您有时可能会遇到应用程序性能或备份方面的问题。

如果你想使用临时文件(例如,你想创建 PDF 供用户下载),你应该使用 JVM 的临时目录。获取临时目录使用

String tempDirPath = System.getProperty("java.io.tmpdir");

或者简单地创建临时 PDF 文件

File tempPDF = File.createTempFile("temp-", ".pdf");

关于每当我安装新的 war 文件时,Tomcat 下载文件夹为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com