spring-mvc - 如何在 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"
但比起硬编码,我更愿意知道是否有其他方法可以获取我的项目路径。
解决方案
您可以使用getServletContext().getRealPath("/");
获取给定虚拟路径对应的真实路径。例如,如果 path 等于 /index.html,此方法将返回服务器文件系统上的绝对文件路径,http://index.html 形式的请求将映射到该路径,其中对应于此 ServletContext 的上下文路径。
返回的真实路径将采用适合运行 servlet 容器的计算机和操作系统的格式,包括正确的路径分隔符。
必须考虑捆绑在应用程序的 /WEB-INF/lib 目录中的 JAR 文件的 /META-INF/resources 目录中的资源,前提是容器已将它们从包含的 JAR 文件中解压缩,在这种情况下,解压缩位置的路径必须被退回。
如果 servlet 容器无法将给定的虚拟路径转换为真实路径,则此方法返回 null。
推荐阅读
- java - 将带有 JSON 数据的 BufferedReader 转换为 Hashtable
- android - Android 上的 NFC 主机卡仿真 (HCE) 不适用于特定设备
- flutter - 使用 FCM 和 Flutter 通过设备发送通知
- spring-boot - 使用 KafkaListener 时,如何检查主题消息是否已读完?
- javascript - 找不到模块
- python - 在 Chrome 中使用硒线更改用户代理
- r - 添加与 R 中的温度相关的条件为“热”或“冷”的列
- javascript - 如何协调多个数据可视化之间的交互,特别是当其中一个使用嵌套时?JavaScript 和 D3
- laravel-8 - Laravel 8 Auth 电子邮件验证问题
- angular - 重新加载搜索栏结果