首页 > 解决方案 > 如何在 Spring mvc Web 应用程序中获取项目基本路径?

问题描述

我有部署在 tomcat 服务器上的 spring mvc web 应用程序。在那个项目上,我想在运行时创建文件夹和文件。目前我可以使用在服务器根目录中创建文件夹System.getProperty("catalina.base")。但是当我在外部服务器中部署项目时,我无法在 tomcat 服务器的根级别创建文件夹,因为我没有权限。除此之外,我决定在以下目录中创建文件夹。

tomcat_dirctory/webapps/myproject_directory

所以我需要myproject_directory在运行时的一侧创建文件夹和文件。谁能告诉我这条路是什么。也许我可以按如下方式对其进行硬编码。

 System.getProperty("catalina.base") + File.separator + "webapps"+File.separator+"myproject_directory"

但比起硬编码,我更愿意知道是否有其他方法可以获取我的项目路径。

标签: spring-mvctomcat

解决方案


您可以使用getServletContext().getRealPath("/");

获取给定虚拟路径对应的真实路径。例如,如果 path 等于 /index.html,此方法将返回服务器文件系统上的绝对文件路径,http://index.html 形式的请求将映射到该路径,其中对应于此 ServletContext 的上下文路径。

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

必须考虑捆绑在应用程序的 /WEB-INF/lib 目录中的 JAR 文件的 /META-INF/resources 目录中的资源,前提是容器已将它们从包含的 JAR 文件中解压缩,在这种情况下,解压缩位置的路径必须被退回。

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


推荐阅读