代码之家  ›  专栏  ›  技术社区  ›  Roman

如何在JSF应用程序中获取部署目录路径?

  •  4
  • Roman  · 技术社区  · 14 年前

    是否可以从JSF应用程序中找到部署路径?

    还有一个问题(如果前一个问题的答案是真的):在那里存储一些上传的文件是合法的吗?

    1 回复  |  直到 9 年前
        1
  •  11
  •   Community Nick Bolton    7 年前

    是否可以从JSF应用程序中找到部署路径?

    不是直接的,你需要抓住 ServletContext ExternalContext 如下:

    ServletContext servletContext = (ServletContext) externalContext.getContext();
    

    它反过来提供了著名的 dubious getRealPath() 方法。

    String webContentRoot = servletContext.getRealPath("/");
    

    如果您已经在JSF 2.0上,可以使用 ExternalContext#getRealPath() 相反。


    还有一个问题(如果前一个问题的答案是真的):在那里存储一些上传的文件是合法的吗?

    你可以这么做。您只需要考虑在重新部署应用程序时它们都会丢失,原因很简单,即这些文件不包含在原始战争中。

    如果您想拥有更持久的存储空间,可以考虑将其存储在Web应用程序外部的固定路径中,例如。 /var/webapp/upload 左右。另一种方法是将它们存储在数据库中,这将增加可移植性,但请记住沿文件内容存储一些元数据(名称、内容类型、上次修改的时间戳等),这样您就可以对其进行索引/搜索/缓存。