是否可以从 JSF 应用程序中找出部署路径?
还有一个问题(如果前一个问题的答案是正确的):在那里存储一些上传的文件是否合法?
最佳答案
不是直接,你需要从 ServletContext
中获取 ExternalContext
如下:
ServletContext servletContext = (ServletContext) externalContext.getContext();
它反过来提供了众所周知的 dubious
getRealPath()
方法。String webContentRoot = servletContext.getRealPath("/");
如果您已经使用 JSF 2.0,则可以改用
ExternalContext#getRealPath()
。你可以这样做。您只需要考虑在重新部署应用程序时它们都会丢失,原因很简单,原始 WAR 中不包含这些文件。
如果您想拥有更多永久存储空间,请考虑将其存储在 Web 应用程序之外的固定路径中,例如
/var/webapp/upload
左右。另一种方法是将它们存储在数据库中,这将增加可移植性,但请记住在文件内容中存储一些元数据(名称、内容类型、上次修改的时间戳等),以便您可以索引/搜索/缓存一些内容上。关于java - 如何在 JSF 应用程序中获取部署目录路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3441747/