我正在开发的项目有多个实例(即不同的网站)在单个代码库中运行。根据 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 将如下所示 http://www.europewebsite.co.uk/ 。使用上面的 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 请求的内容(除非有东西重写了它......)。
另一方面,如果您只是想从 "www.europewebsite.co.uk"
这样的 DNS 名称中提取 "europewebsite"
,则没有通用的方法解决方案。我建议将 DNS 转换为全部小写,并在您已预先初始化的表中进行查找,其中包含您准备识别的所有变体。
关于java - 如何获取 URL 类似于 http ://www. europewebsite.co.uk 的服务器的主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122000/