【问题标题】:how to know the path of the webcontainer using java? [duplicate]如何使用 java 知道 webcontainer 的路径? [复制]
【发布时间】:2011-05-23 13:24:04
【问题描述】:

我需要使用 java 获取 web 容器路径,有什么方法吗?我需要通过 JSP 或 Servlet 使用它来获取文件路径。

【问题讨论】:

    标签: java file jsp servlets path


    【解决方案1】:

    我需要使用 JSP 或 Servlet 来获取文件路径。

    所以文件存储在 WAR 的公共 webcontent 中?使用ServletContext#getRealPath()

    String relativeWebPath = "/file.jpg";
    String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
    File file = new File(absoluteDiskPath);
    InputStream input = new FileInputStream(file); // I guess this is what you want.
    // ...
    

    请注意,这仅在 WAR 被容器扩展时才有效。否则最好使用ServletContext#getResourceAsStream(),如果你真的想要得到它的InputStream

    String relativeWebPath = "/file.jpg";
    InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
    // ...
    

    另见:

    【讨论】:

      【解决方案2】:

      您可能正在寻找HttpServletRequest#getContextPath()

      返回请求 URI 中指示请求上下文的部分。上下文路径始终位于请求 URI 的首位。路径以“/”字符开头,但不以“/”字符结尾。对于默认(根)上下文中的 servlet,此方法返回“”。容器不解码此字符串。

      ...或getServletPath():

      返回此请求的 URL 中调用 servlet 的部分。此路径以“/”字符开头,包括 servlet 名称或 servlet 路径,但不包括任何额外的路径信息或查询字符串。与 CGI 变量 SCRIPT_NAME 的值相同。

      【讨论】:

        【解决方案3】:

        您对HttpServletRequestgetContextPath() 方法感兴趣。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-18
          • 2017-01-02
          • 2018-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多