Spring mvc 如何在Spring mvc web应用程序中获取项目基本路径?

Spring mvc 如何在Spring mvc web应用程序中获取项目基本路径?,spring-mvc,tomcat,Spring Mvc,Tomcat,我有一个部署在tomcat服务器上的spring mvc web应用程序。在那个项目上,我想在运行时创建文件夹和文件。目前,我可以使用System.getProperty(“catalina.base”)在服务器根目录中创建文件夹。但是当我在externel服务器中部署项目时,我无法在tomcat服务器的根级别创建文件夹,因为我没有权限。我决定在下面的目录中创建文件夹 tomcat_dirctory/webapps/myproject_directory 因此,我需要在运行时在myprojec

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

tomcat_dirctory/webapps/myproject_directory
因此,我需要在运行时在
myproject\u目录
中创建文件夹和文件。谁能告诉我这条路怎么走。也许我可以这样说

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

但是除了硬编码,我更想知道是否有其他方法可以获取我的项目路径。

您可以使用
getServletContext().getRealPath(“/”

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

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

只有当容器已从包含JAR文件的JAR文件中解包时,才能考虑捆绑在应用程序的/WEB-INF/lib目录中的JAR文件的/META-INF/Resources目录中的资源,在这种情况下,必须返回解包位置的路径


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

可以使用getServletContext().getRealPath(“/”;是的,如果我在GET或POST方法中定义它,它就可以正常工作。但是我想在控制器中定义一个字段,它将把这个路径值作为字符串保存。然后我可以使用你的方法。检查路径是否存在。如果没有,则使用mkdirs函数创建目录。字符串路径=servletContext.getRealPath(目录);文件=新文件(路径);如果(!file.exists()){file.mkdirs();}Refer@sumesh不管怎样,你的方法对我很有帮助。我使用了getServletContext().getRealPath(“/”);在InitBinder方法中。然后我可以在控制器的任何地方使用它。