我正在尝试用JSTL从url中获取域名。我知道的两个方法返回了错误的信息。我需要的是确切的网址是什么。
当我这样做的时候:
${pageContext.request.remoteHost}我得到我的服务器的IP地址。
当我这样做的时候:
${pageContext.request.serverName}我通常会得到正确的域名,但在我们亚马逊上的服务器上,它会返回"server1“而不是正确的域名,这可能是因为它处理多个域名的方式。
有人知道如何在URL中获取当前域名吗?
我可能需要获取URL,然后对其进行解析。我该怎么做呢?
发布于 2010-09-28 01:11:31
您可以使用HttpServletRequest.getRequestUrl()执行以下操作:
重新构造客户端用来发出请求的URL。返回的URL包含协议、服务器名称、端口号和服务器路径,但不包含查询字符串参数。
这将返回一个类似于Get domain name in url with JSTL?的字符串
然后,解析它以找到位于the scheme (http、https等)之后和the requestURI之前的字符串应该是很简单的。
发布于 2010-09-28 21:14:40
您应该改用ServletRequest#getLocalName()。它返回服务器的真实主机名。ServletRequest#getServerName()确实返回了Host报头中设置的值。
${pageContext.request.localName}就这样。其他答案中提出的解决方案显然是笨拙和老生常谈的。
顺便说一句,ServletRequest#getRemoteHost()不会返回服务器的主机名,而是客户机的主机名(如果主机名不能立即解析,则返回IP )。当你在物理上同一台机器上同时运行and服务器和and浏览器时,它显然与服务器相同。如果您对服务器的IP感兴趣,可以使用ServletRequest#getLocalAddr()。术语“本地”和“远程”必须从服务器的角度来解释,而不是从客户端的角度来解释,毕竟所有的Java代码都是在服务器上运行的。
发布于 2010-09-28 01:05:37
您可以从URL解析域名
或
public static String getDomainName(String url)
{
URL u;
try {
u = new URL(url);
}
catch (Exception e) {
return "";
}
return u.getHost();
}https://stackoverflow.com/questions/3806045
复制相似问题