获取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