servletContext.getRealPath(“”)返回不同的结果tomcat7 / tomcat8 bug?

时间:2015-04-19 09:29:55

标签: tomcat servlets

有人可以解释为什么servletContext.getRealPath("")在使用不同版本的tomcat时会返回不同的结果吗?

  • Tomcat 7:/ this / is / my / path
  • Tomcat 8:/ this /是/ my / path /(尾随斜杠)

这是一个错误,还是有人对此行为做了很好的解释(以及解决方法?): - )

1 个答案:

答案 0 :(得分:0)

是的,你是对的,在Tomcat 8中,getRealPath(“”)将返回末尾带有文件分隔符的路径。以下是文档:Java doc - getRealPath

  

获取与给定虚拟路径对应的真实路径。

     

例如,如果path等于/index.html,则此方法将返回服务器文件系统上的绝对文件路径,formhttp://://index.html的请求将映射到该文件系统,其中对应到此ServletContext的上下文路径。

     

返回的实际路径将采用适合运行servlet容器的计算机和操作系统的形式,包括正确的路径分隔符。

     

只有当容器从其包含的JAR文件中解压缩它们时,必须考虑捆绑在应用程序的/ WEB-INF / lib目录中的/ META-INF / resourcesDirectories中的资源,在这种情况下,解压缩的路径必须退回位置。

     

如果servlet容器无法将给定的虚拟路径转换为实际路径,则此方法返回null。

     

参数:path - 要转换为真实路径的虚拟路径返回:真实路径,如果无法执行转换,则返回null