Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取URL类似的服务器的主机名http://www.europewebsite.co.uk?_Java_Url_Webserver_Httprequest_Hostname - Fatal编程技术网

Java 如何获取URL类似的服务器的主机名http://www.europewebsite.co.uk?

Java 如何获取URL类似的服务器的主机名http://www.europewebsite.co.uk?,java,url,webserver,httprequest,hostname,Java,Url,Webserver,Httprequest,Hostname,我正在处理的项目有多个实例(即不同的网站)在单个代码库中运行。根据URL,我们显示相应的网站 例如,如果http://www.uswebsite.com/我们向我们展示的网站。如果http://www.cawebsite.com/将显示加拿大网站。为检测这一点而编写的代码是 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; String server` = h

我正在处理的项目有多个实例(即不同的网站)在单个代码库中运行。根据URL,我们显示相应的网站

例如,如果
http://www.uswebsite.com/
我们向我们展示的网站。如果
http://www.cawebsite.com/
将显示加拿大网站。为检测这一点而编写的代码是

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

String server` = httpRequest.getServerName();
如果请求来自
http://www.uswebsite.com/
然后根据上面的代码
String server=uswebsite
我们编写了额外的代码来弹出相应的站点


我们现在计划在同一个代码库中包含欧洲实例,我看到欧洲站点的URL将是这样的。使用如上所述的getServer(),它将获取
String server=europewebsite
。如果将.co.uk放在最后,上述代码是否仍然会得到
String server=europewebsite
String server=europewebsite.co
请告知,因为我无法在本地测试它。

您问题的措辞相当混乱,所以我假设您只是想从一个层次化URL字符串中提取主机名

最可靠的方法是为URL字符串构造
java.net.URL
java.net.URI
的实例,并使用相关的getter提取主机名


另一方面,如果您试图在servlet中检测当前请求的虚拟主机名,则您的
httpRequest.getServerName()
会将该主机名显示在HTTP请求的第一行中(除非有人重写了它…)



另一方面,如果您只是想从DNS名称(如www.europewebsite.co.uk)中提取
“europewebsite”
,则没有通用的解决方案。我建议将DNS转换为所有小写形式,并在预先初始化的表中查找准备识别的所有变体。

通常情况下,httpRequest.getServerName()将返回主机名,在您的情况下,它是完整的名称,即“europewebsite.co.uk”