java如何获取域名
获取域名的方法
在Java中,可以通过多种方式获取域名,具体取决于应用场景和需求。以下是几种常见的方法:
使用InetAddress类获取主机名
InetAddress类提供了获取主机名和IP地址的功能。通过主机名可以间接获取域名。

import java.net.InetAddress;
import java.net.UnknownHostException;
public class DomainExample {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getByName("www.example.com");
String hostName = address.getHostName();
System.out.println("Host Name: " + hostName);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
从URL中提取域名
使用java.net.URL类可以从完整的URL中提取域名部分。
import java.net.MalformedURLException;
import java.net.URL;
public class DomainFromURL {
public static void main(String[] args) {
try {
URL url = new URL("https://www.example.com/path/to/resource");
String domain = url.getHost();
System.out.println("Domain: " + domain);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
获取当前请求的域名(Web应用)
在Web应用中,可以通过HttpServletRequest对象获取当前请求的域名。

import javax.servlet.http.HttpServletRequest;
public class WebDomainExample {
public void doGet(HttpServletRequest request) {
String domain = request.getServerName();
System.out.println("Domain: " + domain);
}
}
使用正则表达式提取域名
如果需要从字符串中提取域名,可以使用正则表达式匹配。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDomainExtractor {
public static void main(String[] args) {
String url = "https://sub.example.com/path";
Pattern pattern = Pattern.compile("^(https?://)?([^:/]+)(:[0-9]+)?(/.*)?$");
Matcher matcher = pattern.matcher(url);
if (matcher.find()) {
String domain = matcher.group(2);
System.out.println("Domain: " + domain);
}
}
}
使用第三方库(如Apache Commons)
Apache Commons Validator库提供了更强大的域名处理功能。
import org.apache.commons.validator.routines.DomainValidator;
public class CommonsDomainExample {
public static void main(String[] args) {
boolean isValid = DomainValidator.getInstance().isValid("example.com");
System.out.println("Is valid domain: " + isValid);
}
}
注意事项
- 确保正确处理异常情况,如无效的URL或主机名。
- 在Web应用中,注意区分
getServerName()和getRequestURL()的返回值。 - 使用正则表达式时,确保模式能够覆盖各种可能的域名格式。
以上方法涵盖了从简单到复杂的域名获取需求,可以根据具体场景选择合适的方式。






