首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JSTL获取url中的域名?

用JSTL获取url中的域名?
EN

Stack Overflow用户
提问于 2010-09-28 01:02:41
回答 4查看 24.2K关注 0票数 7

我正在尝试用JSTL从url中获取域名。我知道的两个方法返回了错误的信息。我需要的是确切的网址是什么。

当我这样做的时候:

代码语言:javascript
复制
${pageContext.request.remoteHost}

我得到我的服务器的IP地址。

当我这样做的时候:

代码语言:javascript
复制
${pageContext.request.serverName}

我通常会得到正确的域名,但在我们亚马逊上的服务器上,它会返回"server1“而不是正确的域名,这可能是因为它处理多个域名的方式。

有人知道如何在URL中获取当前域名吗?

我可能需要获取URL,然后对其进行解析。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-28 01:11:31

您可以使用HttpServletRequest.getRequestUrl()执行以下操作:

重新构造客户端用来发出请求的URL。返回的URL包含协议、服务器名称、端口号和服务器路径,但不包含查询字符串参数。

这将返回一个类似于Get domain name in url with JSTL?的字符串

然后,解析它以找到位于the scheme (http、https等)之后和the requestURI之前的字符串应该是很简单的。

票数 1
EN

Stack Overflow用户

发布于 2010-09-28 21:14:40

您应该改用ServletRequest#getLocalName()。它返回服务器的真实主机名。ServletRequest#getServerName()确实返回了Host报头中设置的值。

代码语言:javascript
复制
${pageContext.request.localName}

就这样。其他答案中提出的解决方案显然是笨拙和老生常谈的。

顺便说一句,ServletRequest#getRemoteHost()不会返回服务器的主机名,而是客户机的主机名(如果主机名不能立即解析,则返回IP )。当你在物理上同一台机器上同时运行and服务器和and浏览器时,它显然与服务器相同。如果您对服务器的IP感兴趣,可以使用ServletRequest#getLocalAddr()。术语“本地”和“远程”必须从服务器的角度来解释,而不是从客户端的角度来解释,毕竟所有的Java代码都是在服务器上运行的。

票数 13
EN

Stack Overflow用户

发布于 2010-09-28 01:05:37

您可以从URL解析域名

代码语言:javascript
复制
 public static String getDomainName(String url)
    {
         URL u;
         try {
             u = new URL(url);
         } 
         catch (Exception e) { 
             return "";
         }
         return u.getHost();
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3806045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档