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

标签 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` = httpRequest.getServerName();

如果请求来自http://www.uswebsite.com/,那么根据上面的代码String server = uswebsite,所以我们编写了额外的代码来弹出对应站点

我们现在计划将欧洲实例包含在同一代码库中,我发现欧洲站点的 URL 将如下所示 http://www.europewebsite.co.uk/ 。使用上面的 getServer() 将获取 String server=europewebsite。通过在末尾添加 .co.uk ,上述代码仍然会得到 String server=europewebsiteString server=europewebsite.co 请告知,因为我无法测试它在我本地的这个。

最佳答案

您的问题的措辞相当困惑,因此我假设您只是想从分层 URL 字符串中提取主机名。

最可靠的方法是为 url 字符串构造一个 java.net.URLjava.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/

相关文章:

webserver - 静态网页 (html) 和文件,用于在不同工作负载上对 Web 服务器性能进行基准测试

java - 处理结果集中的空值

url - 需要有 example.com/username 或 username.example.com,但如何?

asp.net - 使用 Cookie 获取 Web session 状态 - 有哪些陷阱?

performance - 多核/多处理器是否有助于 Web 服务器的性能?

python - 使用python从url下载多个压缩文件

java - 如何从文本文件中删除特定内容?

java - 检查字符串中的一组特定字符(密码)

java - 动态添加列到 JTable

html - 绕过阻止其 URL 包含嵌入式凭据的子资源请求