spring中获取绝对路径的几种方法
1、在普通类中,想要获取绝对路径,可以通过获取ServletContext的方式。
WebApplicationContext webApplicationContext = ContextLoader
.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
// 得到文件绝对路径
String realPath = servletContext.getRealPath("/resource");
System.out.println("realPath:"+realPath);
2、在普通类中,想要获取绝对路径,可以通过获取ServletContext的方式。
@RequestMapping("test")
public String test(HttpServletRequest request) {
String path = request.getServletContext().getContextPath();
System.out.println(path);
String realPath = req.getServletContext().getRealPath("/uploadFile");
System.out.println(realPath);
return realPath;
}
3、还有一种方法是在web.xml配置。
<!-- 配置webAppRootKey -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>project.root</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>
如果没有配置webAppRootKey,可以用System.getProperty("webapp.root")
如果配置了webAppRootKey,可以用System.getProperty("project.root"),project.root 这个值可以自定义
注:比如在log4j.properties配置文件,就可以按下面的方式使用${webapp.root}