java - Spring MVC中如何获取Web项目的根路径?

标签 java spring-mvc

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

@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接口(interface)即可自动注入(inject)ServletContext。重写 setServletContext 方法。请关注link

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

关于java - Spring MVC中如何获取Web项目的根路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997862/

相关文章:

java - 解码字符串内的 ASCII 字符

java - 如何使用 Spring MVC 在 src/main/webapp/resources 中上传图片

mysql - 使用 hibernate @Transactional 插入到表中

java - 在 Spring 应用程序中加载内部(类路径)和外部属性文件

spring-mvc - 无法在使用 SpringJUnit4ClassRunner 的测试中加载 Spring 应用程序上下文

java - 我如何更改我的 Eclipse 源格式化程序设置来处理以下示例?

java - 如何处理 Eclipse 模板的驼峰式大小写?

java - android 中相同包名的问题

java - 是否可以使用 RxJava 在非主线程中调用 “onSensorChanged” 方法?

java - 什么时候我们需要多个Dispatcher Servlet?