Java 如何在SpringMVC中获取web项目的根路径?

Java 如何在SpringMVC中获取web项目的根路径?,java,spring-mvc,Java,Spring Mvc,我想在web项目的根路径上创建一个临时文件夹,用于上载文件。我用谷歌搜索过: @RequestMapping(value = "/upload", method = RequestMethod.POST) public void torrent2magnet(HttpSession session) { String uploadBaseDir = session.getServletContext().getRealPath("/")+File.separator+"uploadFil

我想在web项目的根路径上创建一个临时文件夹,用于上载文件。我用谷歌搜索过:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public void torrent2magnet(HttpSession session) {
    String uploadBaseDir = session.getServletContext().getRealPath("/")+File.separator+"uploadFiles"+File.separator;
}
可以获取web项目的相对路径但是有以下两个障碍:

1:
session.getServletContext().getRealPath(“/”)
在使用不同的容器(如tomcat或weblogic)时,其行为可能会有所不同。在最坏的情况下,它可能返回
null

2:我打算编写一个
@Service
类,其中将提供一个方法来返回当前web项目的根路径。如何在
@Service
类中获取
ServletContext
实例


有没有更优雅的方法来解决这两个问题?非常感谢

只需实现
ServletContextAware
接口即可自动注入ServletContext。重写
setServletContext
方法。请按照


还有一个建议是,请将您的上载目录放在应用程序之外。这始终是一个好的设计

只需实现
ServletContextAware
接口即可自动注入ServletContext。重写
setServletContext
方法。请按照


还有一个建议是,请将上载目录放在应用程序之外。这始终是一个好的设计

为什么不在属性文件中提供web应用程序根目录的绝对路径作为可配置参数,数据库字段或环境变量。为什么不在属性文件、数据库字段或环境变量中提供web应用程序根的绝对路径作为可配置参数。谢谢!你的意思是我只是写一个somwhat
/home/imf/uplodFiles
?它允许写入不是web项目根目录子路径的路径吗?绝对允许!当上传文件的数量增加时,它将有助于将来遵循此链接,签出UploadController.java。你会明白的:)谢谢!你的意思是我只是写一个somwhat
/home/imf/uplodFiles
?它允许写入不是web项目根目录子路径的路径吗?绝对允许!当上传文件的数量增加时,它将有助于将来遵循此链接,签出UploadController.java。你会明白:)