Java 如何获取URL类似的服务器的主机名http://www.europewebsite.co.uk?
我正在处理的项目有多个实例(即不同的网站)在单个代码库中运行。根据URL,我们显示相应的网站 例如,如果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
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”