如何在jsp中创建绝对url?

如何在jsp中创建绝对url?,jsp,url,jstl,Jsp,Url,Jstl,如果jsp中有,我实际上希望它生成http://mysite.com/context/article。有什么简单的方法可以做到这一点吗?没有简单的方法。硬编码或输出以下内容: ${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, '')}${pageContext.request.contextPath} 很麻烦,但是如果您想正确地考虑URL的协议和端口部分,没有比这更短/更好的方法了。您最多可

如果jsp中有
,我实际上希望它生成
http://mysite.com/context/article
。有什么简单的方法可以做到这一点吗?

没有简单的方法。硬编码或输出以下内容:

${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, '')}${pageContext.request.contextPath}
很麻烦,但是如果您想正确地考虑URL的协议和端口部分,没有比这更短/更好的方法了。您最多可以将
${pageContext.request}
分配给
${r}

<c:set var="r" value="${pageContext.request}" />

也就是说,我只是看不出这个要求有什么用处/价值。我总是将我的webapp特定链接编码为与当前上下文或HTML
标记相关。否则,当您的域、端口和/或甚至上下文发生变化时,您将不得不进行大量维护。为什么会有这样的要求

另见:
  • (实际上是敏感话题)

应用程序编程可能不需要绝对URL。考虑一个页面,它可能需要为站点中的任何给定页面提供一个PyMalink,知道基础URL可能是有益的。顺便说一句,我认为EWiki软件Confluence需要在其基本URL的配置部分对其进行硬编码,而不是试图找出它。您如何指静态元素,如图像、样式表等。?你如何到达相对的顶层?有帮助吗?没有,尽管名称显示了如何创建相对于上下文根的url,其中不包括域。啊-太糟糕了,我没有意识到这一点。您可以使用request.getServerName()获取服务器名-因此,如果您知道协议,您应该可以将其与链接问题结合起来,并使用getServerPort()获取端口。
${fn:replace(r.requestURL, r.requestURI, '')}${r.contextPath}