一尘不染

ServletContext.getRealPath()是否可用于Web片段?

tomcat

我使用Web片段(servlet 3规范),因此可以通过加载WAR META-INF/resources/access.xml库中/WEB- INF/lib/的文件,例如ServletContext.getResourceAsStream("access.xml")

不能这样做ServletContext.getRealPath("access.xml")(=> null)。

规范指出:

getRealPath方法接受一个String参数,并返回String路径对应的本地文件系统上文件的表示形式。META- INF/resources仅当在调用时容器已将其从其包含的JAR文件中解压缩时,才必须考虑JAR文件目录中的资源getRealPath()
,并且在这种情况下,必须返回解压缩的位置。

我的容器(Tomcat)没有打开jar的包装,这似乎是问题所在?Tomcat如何解压缩jar。包装WAR时,应该打开包装吗?


阅读 234

收藏
2020-06-16

共1个答案

一尘不染

是的,getResourcesAsStream()始终有效。但是getRealPath()不是。

答:不要尝试getRealPath()与Web片段一起使用。

2020-06-16