我可以使用servlet或jsp代码获取eclipse项目路径吗?

时间:2019-02-06 03:36:50

标签: java jsp servlets java-ee

 <%=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

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

1 个答案:

答案 0 :(得分: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

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