方式一:

  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3. import java.util.Arrays;
  4. import java.util.HashSet;
  5. import java.util.Set;
  6. import java.util.regex.Pattern;
  7.  
  8. public class URLUtil {
  9.  
  10. private final static Set<String> PublicSuffixSet = new HashSet<String>(
  11. Arrays.asList(new String(
  12. "com|org|net|gov|edu|co|tv|mobi|info|asia|xxx|onion|cn|com.cn|edu.cn|gov.cn|net.cn|org.cn|jp|kr|tw|com.hk|hk|com.hk|org.hk|se|com.se|org.se")
  13. .split("\\|")));
  14.  
  15. private static Pattern IP_PATTERN = Pattern.compile("(\\d{1,3}\\.){3}(\\d{1,3})");
  16.  
  17. /**
  18. * 获取url的顶级域名
  19. * @param url
  20. * @return
  21. */
  22. public static String getDomainName(URL url) {
  23. String host = url.getHost();
  24. if (host.endsWith(".")){
  25. host = host.substring(0, host.length() - 1);
  26. }
  27. if (IP_PATTERN.matcher(host).matches()){
  28. return host;
  29. }
  30.  
  31. int index = 0;
  32. String candidate = host;
  33. for (; index >= 0;) {
  34. index = candidate.indexOf('.');
  35. String subCandidate = candidate.substring(index + 1);
  36. if (PublicSuffixSet.contains(subCandidate)) {
  37. return candidate;
  38. }
  39. candidate = subCandidate;
  40. }
  41. return candidate;
  42. }
  43.  
  44. /**
  45. * 获取url的顶级域名
  46. * @param url
  47. * @return
  48. * @throws MalformedURLException
  49. */
  50. public static String getDomainName(String url) throws MalformedURLException {
  51. return getDomainName(new URL(url));
  52. }
  53.  
  54. /**
  55. * 判断两个url顶级域名是否相等
  56. * @param url1
  57. * @param url2
  58. * @return
  59. */
  60. public static boolean isSameDomainName(URL url1, URL url2) {
  61. return getDomainName(url1).equalsIgnoreCase(getDomainName(url2));
  62. }
  63.  
  64. /**
  65. * 判断两个url顶级域名是否相等
  66. * @param url1
  67. * @param url2
  68. * @return
  69. * @throws MalformedURLException
  70. */
  71. public static boolean isSameDomainName(String url1, String url2)
  72. throws MalformedURLException {
  73. return isSameDomainName(new URL(url1), new URL(url2));
  74. }
  75.  
  76. public static void main(String[] args) throws Exception {
  77. String urlStr = "http://news.hexun.com/2017-09-23/190978248.html";
  78. getDomainName(urlStr);
  79. getDomainName(new URL(urlStr));
  80. }
  81.  
  82. }

方式二:

  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5.  
  6. public class DomainUtils {
  7. /**
  8. * 获取url的顶级域名
  9. * @param
  10. * @return
  11. */
  12. public static String getTopDomain(String url){
  13. try{
  14. //获取值转换为小写
  15. String host = new URL(url).getHost().toLowerCase();//news.hexun.com
  16. Pattern pattern = Pattern.compile("[^\\.]+(\\.com\\.cn|\\.net\\.cn|\\.org\\.cn|\\.gov\\.cn|\\.com|\\.net|\\.cn|\\.org|\\.cc|\\.me|\\.tel|\\.mobi|\\.asia|\\.biz|\\.info|\\.name|\\.tv|\\.hk|\\.公司|\\.中国|\\.网络)");
  17. Matcher matcher = pattern.matcher(host);
  18. while(matcher.find()){
  19. return matcher.group();
  20. }
  21. }catch(MalformedURLException e){
  22. e.printStackTrace();
  23. }
  24. return null;
  25. }
  26. public static void main(String[] args) {
  27. System.out.println(getTopDomain("http://news.hexun.com/2017-09-23/190978248.html"));//hexun.com
  28.  
  29. }
  30. }

Java获取URL中的顶级域名domain的工具类的更多相关文章

  1. java 解析URL里的主域名及参数工具类

    java 解析URL里的协议及参数工具类,解析URL中的主域名,并统一把协议修改成http或去掉协议 public class UrlDomainUtils { private static fina ...

  2. java获取url中的参数

    获取地址栏中的url中的userName的值 String userName=new String(request.getParameter("userName")); 获取中文的 ...

  3. python 从给定的URL中提取顶级域名(TLD)

    安装 PyPI的最新稳定版本: pip install tld 或者GitHub的最新稳定版本: pip install https://github.com/barseghyanartur/tld/ ...

  4. java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...

  5. 【C++】获取URL中主机域名

    // ConsoleApplication1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h& ...

  6. 记录一次bug解决过程:velocity中获取url中的参数

    一.总结 在Webx的Velocity中获取url中参数:$rundata.getRequest().getParameter('userId') 在Webx项目中,防止CSRF攻击(Cross-si ...

  7. 关于获取URL中传值的解决方法

    在我们页面的URL中包含着很多信息,包括域名,协议等等这里就不一一介绍了),对于我们开发者而言,使用比较多的就是页面之间的传值.为什么要页面传值呢?很简单,当你在浏览一个商品页面的时候你要看到一个商品 ...

  8. Java获取URL对应的资源

    Java获取URL对应的资源   认识IP.认识URL是进行网络编程的第一步.java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源.   一.认识URL   ...

  9. 如何获取url中的参数并传递给iframe中的报表

    在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...

随机推荐

  1. HDU 5977 Garden of Eden(点分治求点对路径颜色数为K)

    Problem Description When God made the first man, he put him on a beautiful garden, the Garden of Ede ...

  2. Java 基础之--注解Annotation详解

    自定义注解入门: public @interface Annotation01 { //set default value ""; String value() default & ...

  3. [原]CentOS7.2部署KVM虚拟机

    前段时间学习了关于PostGis.OSM数据以及Mapnik相关内容,接下来将利用假期重点学习PostgreSQL-XL和瓦片服务器集群技术,因此先把环境搭好.计划采用KVM来充分利用家里不太宽裕的“ ...

  4. 13. pt-ioprofile

    pt-ioprofile 直接运行即可,对系统有影响,慎用!!! read:从文件中读出数据.要读取的文件用文件描述符标识,数据读入一个事先定义好的缓冲区. write:把缓冲区的数据写入文件中. p ...

  5. [SoapUI] 检查测试步骤的类型或者或者某种特定类型的步骤列表

    SoapUI Groovy : Check if test step is of specific type, such as : Wsdl, Rest, Jdbc, HTTP, Groovy etc ...

  6. zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  7. 开启hadoop集群

    首先开启zookeeper zkServer.sh start start-all

  8. Unittest中TestCase类中定义的几个特殊方法

    1.setUp():每个测试方法运行前运行,测试前的初始化工作: 2.tearDown():每个测试方法运行结束后运行,测试后的清理工作: 3.setUpClass():所有的测试方法运行前运行,单元 ...

  9. 4k项目--PHY通道绑定的两种模式

    1.通道绑定有两种模式: • PMA bonding• PMA and PCS bonding GT通道是不支持通道绑定的 2.PMA绑定 PMA绑定减少了PMA之间的通道之间的Skew.并且在PMA ...

  10. Centos yum 修改为阿里源以及常用的命令

    1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...