在Java web应用程序中获取上下文路径

5

我正在尝试在Java Web应用程序中获取项目上下文路径。我的项目位于D:\GED\WSysGED目录中,我想要获取该路径。在我的研究中,我找到了两种方法来实现这一点:第一种使用System.getProperty,如下所示:

String path= System.getProperty("user.dir");  
System.out.println(path);

第一种方法是使用Java的Class.getProtectionDomain().getCodeSource().getLocation().getPath()方法。

但该代码返回D:\eclipse-jee-luna-R-win32\eclipse,这是Eclipse可执行文件所在的位置。

第二种方法是使用servlet。

我根据教程创建了一个。

public class ContextPathServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        ServletContext servletContext = getServletContext();
        String contextPath = servletContext.getRealPath("/");
        PrintWriter out = response.getWriter();
        out.println("<br/>File system context path (in TestServlet): " + contextPath);
    }
}

但是它显示的是C:\Users\Juan\SysGED\.metadata\.plugins\org.eclipse.wst.server.core\tmp6\wtpwebapps\WSysGED

获取项目路径的正确方法是什么?


1
第二种方法是正确的。返回的路径是您的应用程序服务器部署路径。在Java EE中不存在项目路径。 - home
好的,谢谢你的回答,还有一件事。路径 C:\Users\Juan\SysGED.metadata.plugins\org.eclipse.wst.server.core\tmp6\wtpwebapps\WSysGED 是静态的,还是部署有时会更改路径?@home - Juan Camilo Mejia
它取决于您的应用服务器。请告诉我们为什么您需要访问该路径 - 是否有其他解决方案可用? - home
1
我需要在上传文件后创建一个文件夹来存储文件,并且可供下载,我有一个Servlet用于显示要下载的文件,但是我在Servlet代码中硬编码了文件所在的路径。这就是为什么我想知道该路径的原因。我不想将路径硬编码。@home - Juan Camilo Mejia
@JuanCamiloMejia 看看这个答案 https://stackoverflow.com/questions/23452484/create-folder-and-upload-file-using-servlet。看起来应该可以解决你的问题。哎呀,刚刚才发现这是五年前的帖子!!如果有助于其他人,我会保留这个评论 :) - bidisha mukherjee
你为什么认为你得到的结果是不正确的? - user207421
1个回答

3
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        String contextPath = request.getContextPath();
        System.out.println(contextpath);

    }

5
请编辑并提供更多信息。不建议只给出代码或者“试一下”的答案,因为它们没有可搜索的内容,也无法解释为什么有人应该“试一下”。 - abarisone
2
请提供更多信息。您是如何得出这个结论的?除了复制粘贴代码之外,我们在哪里可以验证您的解决方案是否正确?为什么它有效? - saniales

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接