ServletContext.getRealPath("pictures") 返回 tmp 目录? JBoss

问题描述 投票:0回答:3

我用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。我想用

java servlets jboss seam
3个回答
2
投票

正如您在评论中提到的 - 您需要它来渲染图像。使用这种方法来达到这个目的是错误的。

<h:graphicsImage>
默认使用应用程序上下文根的相对路径。无需额外步骤。

至于JBoss在提取war文件时的行为——看起来很奇怪,但它并不违反规范。可以随意提取未爆炸的战争文件。

更新:如果这是关于一场爆炸性的战争(由你发起),那么请随意触发一个错误。但这并不重要——你不应该在网络应用程序中存储图片。配置外部位置并将它们保存在那里。否则,您可能会在重新部署时丢失图片。


1
投票

是的。行为是正确的。有关 getRealPath() 方法应该执行的操作的描述,请参阅 javadoc:阅读此处

我怀疑你正在寻找不同的方法,但你没有充分描述你希望得到什么样的路径。


0
投票
private static String temp2Real(String temp) {
    temp = temp.replaceFirst("temp", "webapps");
    temp = temp.replaceFirst("\\d+\\-", "");
    return temp;
}
© www.soinside.com 2019 - 2024. All rights reserved.