【发布时间】:2011-05-23 13:24:04
【问题描述】:
我需要使用 java 获取 web 容器路径,有什么方法吗?我需要通过 JSP 或 Servlet 使用它来获取文件路径。
【问题讨论】:
标签: java file jsp servlets path
我需要使用 java 获取 web 容器路径,有什么方法吗?我需要通过 JSP 或 Servlet 使用它来获取文件路径。
【问题讨论】:
标签: java file jsp servlets path
我需要使用 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);
// ...
【讨论】:
您可能正在寻找HttpServletRequest#getContextPath():
返回请求 URI 中指示请求上下文的部分。上下文路径始终位于请求 URI 的首位。路径以“/”字符开头,但不以“/”字符结尾。对于默认(根)上下文中的 servlet,此方法返回“”。容器不解码此字符串。
...或getServletPath():
返回此请求的 URL 中调用 servlet 的部分。此路径以“/”字符开头,包括 servlet 名称或 servlet 路径,但不包括任何额外的路径信息或查询字符串。与 CGI 变量 SCRIPT_NAME 的值相同。
【讨论】:
您对HttpServletRequest 的getContextPath() 方法感兴趣。
【讨论】: