【问题标题】:I can't get the real path from Servlet (Java EE)我无法从 Servlet (Java EE) 获得真正的路径
【发布时间】:2013-03-25 00:18:37
【问题描述】:

当我想在 Java EE 中获得真实路径时,请使用以下说明:

String rootPath = getServletConfig().getServletContext().getRealPath("/");
System.out.println(rootPath);

结果是: C:\Users\saad\Desktop\pds.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Metier\

而且通常情况下,我必须得到这个结果:

C:\Users\saad\Desktop\pds\Metier\

有人可以帮帮我吗?

【问题讨论】:

    标签: java tomcat absolute-path realpath


    【解决方案1】:

    这是一个很好的例子,说明为什么“相对于应用程序的文件系统路径”的概念在 servlet 中确实没有意义。当 servlet 部署到容器中时,不能保证它驻留在真实的文件系统位置。 servlet 容器可以选择直接从 .war 文件执行它而不扩展它,或者它可以从根本不受传统文件系统支持的 URL 读取应用程序代码。

    在您的情况下,您返回的漫长路径正是 Eclipse 部署您的应用程序的位置。该路径是 100% 正确在该上下文中,因为如果您查看该位置的文件系统,您会找到应用程序的副本,但显然不是您所期望的。

    一般来说,不能移植地引用相对于您的应用程序的任何文件路径,因为该路径可能不存在。

    【讨论】:

      【解决方案2】:

      Tomcat 目录 (tomcat/bin) 的路径:

      File inputFile = new File("file.xml"); // tomcat_dir/bin/file.xml
      

      其他 Tomcat 目录的路径,例如“webapps”:

      File inputFile = new File("../webapps/file.xml"); // tomcat_dir/webapps/file.xml
      

      摆脱绝对路径的好方法:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-07
        • 1970-01-01
        • 2020-11-27
        • 2023-04-01
        • 1970-01-01
        • 2019-04-18
        • 2020-11-21
        • 2015-12-16
        相关资源
        最近更新 更多