使用 getSystemResource 从 servlet 访问文件



我想使用 getSystemResource 访问来自 servlet 的文件。这些文件驻留在项目本身和硬盘上。对于我使用的项目内的文件:

  ServletContext ctx = getServletContext();
  InputStream is = ctx.getResourceAsStream("/testing.txt");

如果我将文件放在build/web文件夹中,它可以工作,但是当我清理和构建项目时,所有文件都被删除了。我应该把文件放在哪里?

对于项目外的文件,我使用 File 对象:

 File file = new File("c://tmp//testing.txt");
 InputStream is= new FileInputStream(file); 

这是一个好的做法吗?

不应删除这些文件,除非您在应用程序仍在运行时在展开的 WAR 中自己创建了这些文件。然后,当您重新部署 WAR 时,这些文件确实会被删除,因为它们不包含在原始 WAR 中。

通常的做法是将这些文件存储在 Web 应用上下文之外的固定路径中。 您绝对不应该为此使用 tmp/temp 文件夹。该文件夹符合基础平台定期清理的条件。例如使用 /var/webapp/upload .正确记录它,以便服务器管理员事先创建它。如有必要,使其可由某些web.xml参数进行配置。

或者,当环境不允许创建文件夹和/或写入磁盘时,最后最好的办法是将这些文件存储在 SQL 数据库中。

相关内容

  • 没有找到相关文章

最新更新