获取Web应用程序上下文的URL(基本URL)

有时,您需要在servlet / JSP /基于的任何内容中构造指向Web应用程序上下文的完整URL HttpServletRequest。类似于

**http://server.name:8080/context/** 。Servlet API没有实现此目的的单一方法。

直接的方法是将所有URL组件附加到StringBuffer,例如

ctxUrl = sb.append(req.getScheme()).append("://")

.append(req.getgetServerName()).append(":")

.append(req.getServerPort()) etc

我想知道这种选择是否有问题(速度快10倍):

ctxUrl = req.getRequestURL();

ctxUrl = ctxUrl.substring(0, ctxUrl.lastIndexOf("/")));

上述两种方法是否 总是会 产生相同的结果?

回答:

它称为“基本URL”(您可以在HTML <base>标记中使用的一个)。您可以按以下方式获取它:

StringBuffer url = req.getRequestURL();

String uri = req.getRequestURI();

String ctx = req.getContextPath();

String base = url.substring(0, url.length() - uri.length() + ctx.length()) + "/";

您的ctxUrl.substring(0,

ctxUrl.lastIndexOf("/")));方法将对包含多个文件夹的URL失败http://server.name:8080/context/folder1/folder2/folder3

以上是 获取Web应用程序上下文的URL(基本URL) 的全部内容, 来源链接: utcz.com/qa/416500.html

回到顶部