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

时间:2010-08-09 15:48:36

标签: java deployment jsf file-upload

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

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

1 个答案:

答案 0 :(得分:11)

  

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

不直接,您需要抓取ServletContext中的ExternalContext,如下所示:

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

它反过来提供了众所周知的dubious getRealPath()方法。

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

如果您已使用JSF 2.0,则可以改为使用ExternalContext#getRealPath()


  

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

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

如果您希望拥有更多永久存储空间,请考虑将其存储在网络应用程序之外的固定路径中,例如: /var/webapp/upload左右。另一种方法是将它们存储在数据库中,这样可以提高可移植性,但是请记住在文件内容中存储一些元数据(名称,内容类型,最后修改的时间戳等),以便您可以索引/搜索/缓存上。