【问题标题】:can i get my eclipse project path using servlet or jsp code?我可以使用 servlet 或 jsp 代码获取我的 Eclipse 项目路径吗?
【发布时间】:2019-06-29 23:20:46
【问题描述】:

 <%=session.getServletContext().getRealPath("/") %>
        <%
            String path= session.getServletContext().getRealPath("/");

            FileOutputStream file = new FileOutputStream(path+"\\testingfile.txt");

        %>

上面的代码是我的jsp代码,我运行这个页面后会显示如下输出。

C:\Users\Stark\Documents\Eclipse IDE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Demo\

为什么我得到这条路?而不是我想获得我需要的以下路径...

C:\Users\Stark\Documents\Eclipse IDE\Demo

如何解决这个问题?我需要这个项目位置来将我的文件上传到这个位置,所以请帮助我!

【问题讨论】:

  • 为什么你的 webapp 需要那个路径?部署 webapp 以供生产使用时,它不会有它。
  • 仅供参考: 不要对 Java 代码使用 sn-ps。片段仅适用于 JavaScript。
  • 是的,我不需要那个路径,但我必须上传应该在项目文件夹中的文件,对吗?那么如何使用相对路径上传这些文件?但在 netbeans 中它工作正常,它显示正确的绝对路径,但 eclipse 显示 .metadata 文件夹。
  • 您无法上传到项目文件夹。正如我已经说过的,当您将代码部署到服务器时,没有项目文件夹。你甚至不能在java文件或资源文件旁边上传,因为它们都在jar文件或war文件中。 webapp 创建的任何文件,包括上传的文件,都必须存储在项目文件夹/部署位置之外的其他位置。

标签: java jsp servlets jakarta-ee


【解决方案1】:

您获得“奇怪”路径的原因很简单——您使用的是 Eclipse。 当您在 Eclipse 上运行应用程序时,Eclipse 端将创建新路径并在那里运行您的应用程序。这就是为什么 "getRealPath("/")" 给你奇怪的路径,因为你的应用程序现在运行在一个临时文件夹上。

Eclipse 为什么要这样做?这是我的想法

  1. 这样,Eclipse 可以更快地运行您的应用程序(缓存的应用程序或代码等...)
  2. 您的原始代码将与 Eclipse 所做的任何不必要的更改保持安全。

那么我该如何解决这个问题呢?

我建议您使用“属性”类来设置上传路径。通过这种方式,您可以将 URL 设置与您的逻辑分开,并且您的代码将变得易于维护。而且您不会遇到任何像这样的意外“环境”错误,因为您的设置值将由您的输入修复。

这是使用“属性”的固定代码。

<%

Properties prop = new Properties();
InputStream input = null;

try {

    input = new FileInputStream("config.properties");

    // load a properties file
    prop.load(input);

    // get the property for upload path
    String path=prop.getProperty("path.upload");
    FileOutputStream file = new FileOutputStream(path+"\\testingfile.txt");

    //TODO:rest of your logic codes will come here.

} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (input != null) {
        try {
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
%>

您还必须创建“config.properties”文件。这是文件的内容。

path.upload=C:\Users\Stark\Documents\Eclipse IDE\Demo

希望我的回答对你有所帮助。

【讨论】:

  • 你的回答很好,但我无法获取我上传的文件(例如:我已经上传了图像文件,我只是尝试使用 但它显示“您无法访问本地文件”的错误)为什么会发生这种情况?
猜你喜欢
  • 1970-01-01
  • 2019-06-17
  • 2012-07-11
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
相关资源
最近更新 更多