【发布时间】:2012-01-05 16:13:58
【问题描述】:
简单地说,我如何在 JSP 中检索根网络路径?
如果页面位于http://mysite.com/Level1/index.html 并且上下文路径是/Level1(其中正斜杠是根),那么根网络路径应该是mysite.com。如何在 JSP 中检索它?
谢谢。
【问题讨论】:
标签: jsp
简单地说,我如何在 JSP 中检索根网络路径?
如果页面位于http://mysite.com/Level1/index.html 并且上下文路径是/Level1(其中正斜杠是根),那么根网络路径应该是mysite.com。如何在 JSP 中检索它?
谢谢。
【问题讨论】:
标签: jsp
所以在 JSP 中:${pageContext.request.serverName}
【讨论】:
Servlet(以及 JSP)可以访问 ServletRequest 和 ServletContext 对象,它们具有获取 servlet 资源和位置所需的元数据。
ServletRequest
看来您只需要服务器名称 - 然后,正如其他帖子所示,ServletRequest 可以为您提供 - http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html
ServletContext(在您的情况下不直接有用)
请记住,JSP 只是 servlet - 您的 JSP 可以访问 Servlet 上下文和 Servlet Request 对象。
ServletContext 为您提供了一个 API,用于访问有关其运行位置(在磁盘上)以及其资源如何定位的信息,这称为 servlet 上下文。
servlet 上下文有一个方法“getResourcePaths”(用于在您的 servlet 目录中查找文件)和 “getRealPath()”(它为您提供“完整" servlet 的路径,包括主机名)。
【讨论】:
getRealPath()返回本地磁盘路径,与请求URL无关。
您似乎需要ServletRequest 对象的serverName 属性(请参阅javadoc)。
在 JSP EL 中,${pageContext.request.serverName} 应该可以工作。在 scriptlet 中,使用 request.getServerName()
【讨论】: