我用seamgen(也用gui)制作了一个应用程序,并在应用程序的根目录中创建了一个文件夹“图片”用于存储个人资料图像。
当我评估 ServletContext.getRealPath("pictures") 时,它返回一个临时目录。
D:\Dizertatie\Java\jboss-5.1.0.GA\server\default mp c4o02s-hw5k2v-gj5pc3oq-1-gj632njx-al\RaceCatalog.war\图片 95555156562.jpg
我也尝试了生成的img文件夹,它仍然是同样的事情。
如何获取相对路径
PS。我想用
正如您在评论中提到的 - 您需要它来渲染图像。使用这种方法来达到这个目的是错误的。
<h:graphicsImage>
默认使用应用程序上下文根的相对路径。无需额外步骤。
至于JBoss在提取war文件时的行为——看起来很奇怪,但它并不违反规范。可以随意提取未爆炸的战争文件。
更新:如果这是关于一场爆炸性的战争(由你发起),那么请随意触发一个错误。但这并不重要——你不应该在网络应用程序中存储图片。配置外部位置并将它们保存在那里。否则,您可能会在重新部署时丢失图片。
是的。行为是正确的。有关 getRealPath() 方法应该执行的操作的描述,请参阅 javadoc:阅读此处
我怀疑你正在寻找不同的方法,但你没有充分描述你希望得到什么样的路径。
private static String temp2Real(String temp) {
temp = temp.replaceFirst("temp", "webapps");
temp = temp.replaceFirst("\\d+\\-", "");
return temp;
}