// 形如https://www.baidu.com 或 www.baidu.com, 判断这两种情况,并解析前者去掉http头,传入domain host

// 方案1:正则表达式 + URI解析方法

import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.util.regex.Pattern; public class Main { public static void main(String[] args) {
System.out.println("Hello World!");
// parseDomain();
String url = "www.baidu.com";
String domain = parseDomain(url);
System.out.println("+++domain: " + domain);
} public static boolean verifyDomain(String url) {
String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+(\\?{0,1}(([A-Za-z0-9-~]+\\={0,1})([A-Za-z0-9-~]*)\\&{0,1})*)$";
Pattern pattern = Pattern.compile(regex);
if (pattern.matcher(url).matches()) {
System.out.println("是正确的网址");
return true;
} else {
System.out.println("非法网址");
return false;
}
} private static String parseDomain(String url) {
String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+(\\?{0,1}(([A-Za-z0-9-~]+\\={0,1})([A-Za-z0-9-~]*)\\&{0,1})*)$";
Pattern pattern = Pattern.compile(regex);
if (pattern.matcher(url).matches()) {
       return URI.create(url).getHost();
} else {
       return url;
}
} public static void parseDomain() throws IOException {
String urlAddress = "http://www.roseindia.net/jsf/JSFLoginApplication.shtml";
urlAddress = "http://www.baidu.com";
URL url = new URL(urlAddress);
System.out.println("url.getHost() = " + url.getHost());
System.out.println("url.getPath() = " + url.getPath());
System.out.println("url.getPort() = " + url.getPort());
System.out.println("url.getProtocol() = " + url.getProtocol());
}
}

// 方案2: String的split(), substring(), 拆解出子串来

一般的URL的结构:

[ 协议名 ]:// [ 域名 ] : [ 端口号 ] / [ 路 ] ... [ 径 ]/ [ 文件名 ] ? [ 参 ]& [ 数 ] & [ 部 ]& [ 分 ] # [ 锚部分 ]

js代码如下:

function parseURL(url){
var urlObj={};
urlObj.scheme = url.substring(0,url.indexOf(":")); //协议头
var temp1=url.substring(url.indexOf("//")+2); //去掉协议头后剩下部分
var temp2=temp1.substring(0,temp1.indexOf("/"))//域名+端口号,substring(start,stop) stop要比最后一个提取的字符位置多1
urlObj.domaine = temp2.substring(0,temp1.indexOf(":"));
urlObj.port = temp2.substring(temp1.indexOf(":")+1); if(temp1.indexOf("?")!=-1){
urlObj.path =temp1.substring(temp1.indexOf("/")+1,temp1.indexOf("?"))//路径+文件名
emp1.IndexOf("#")!=-1? urlObj.params=temp1.substring(temp1.indexOf("?")+1,temp1.IndexOf("#"))
:urlObj.params=temp1.substring(temp1.indexOf("?")+1)
}else{
urlObj.path =temp1.substring(temp1.indexOf("/")+1);
}
urlObj.fragment=temp1.substring(temp1.indexOf("#")+1);
return urlObj;
}

java 解析域名得到host的更多相关文章

  1. 通过java解析域名获得IP地址

    IP地址是Internet主机的作为路由寻址用的数字型标识,人不容易记忆.因而产生了域名(domain name)这一种字符型标识. DNS即为域名解析服务.在这里我们如果想通过java程序来解析域名 ...

  2. SpringBoot之解决云服务器VPS在所处云端集群的内网不能解析域名的问题:java.net.UnknownHostException:abc.cn: Temporary failure in name resolution

    一.起因与原因分析过程 前端小伙伴儿告诉我,说服务器崩了. 请求数据接口,接口有响应,但报的json提示指向:数据库异常错误. 遂登陆云主机查看日志,核心记录显示如下: 2018-11-09 22:1 ...

  3. Java动态解析域名

    Java动态解析域名 Java提供InetAddress类,可以对域名-IP进行正向.逆向解析. InetAddress解析的时候一般是调用系统自带的DNS程序. linux 默认的DNS方式是读取/ ...

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

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

  5. 【亲测有效】Ubuntu18.04 sudo apt update无法解析域名的解决方案

    问题描述如下: 拿起了封尘已久的ThinkPad,输入 sudo apt update 的时候,发现这个命令变得不好使了,具体出现的问题如下图所示: #( 09/08/19@ 2:44下午 )( py ...

  6. 阿里云 云解析使用方法/在阿里云ESC服务器解析域名并绑定服务器IP后上传文件通过域名访问步骤教程

    第一步:登录阿里云官网,获取服务器ECS的指定公网IP地址. 1.输入阿里云官网账号进入首页,如下图: 2.点击进入"管理控制台",如下图: 3.点击"云服务器ECS&q ...

  7. 使用adns库解析域名

    1. adns.adns-python库简介 adns库是一个可进行异步非阻塞解析域名的库,主要使用C语言编写,在linux平台下运行.使用adns库进行域名解析效率非常,著名的开源网络爬虫larbi ...

  8. linux服务器wget无法成功解析域名及程序获取外网数据不稳定问题

    1.问题描述: 1.1 最近发现通过linux服务器wget下载远程文件经常提示无法解析域名问题,要重复多次才能成功,成功率比较低. 1.2 PHP用file_get_contents()函数获取淘宝 ...

  9. java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

随机推荐

  1. 负载均衡获得真实源IP的6种方法 【转】

    除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种, 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置, 负载均衡获得真实IP的方法有很多种,将形成专题文章, 本文 ...

  2. python 彩色日志配置

    import os import logging import logging.config as log_conf import datetime import coloredlogs log_di ...

  3. ABP 框架从源码学习——abp框架启动和结束(1)

       1.abp框架的启动是从Global.asax文件的Application_Start启动的,当然代表Global的application必须从AbpWebApplication继承: publ ...

  4. struts2框架学习之第一天

    day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...

  5. ansible笔记(4):常用模块之文件操作

    前文中,我们已经介绍了怎样使用模块,而且我们知道,ansible有很多模块,每个模块都有自己的功能,"模块"涉及到的方向比较多,所以对于个人来说,并没有必要了解所有的模块,我们只需 ...

  6. java使用spark/spark-sql处理schema数据

    1.spark是什么? Spark是基于内存计算的大数据并行计算框架. 1.1 Spark基于内存计算 相比于MapReduce基于IO计算,提高了在大数据环境下数据处理的实时性. 1.2 高容错性和 ...

  7. Selenium+Java自动化之如何优雅绕过验证码

    前言: 验证码问题对于每个ui自动化的同学而言,相信都是个蛋疼的问题,对于验证码的处理我个人不提倡破解,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你们公司的验证码很容易被你破解 ...

  8. SpriteKit 学习体会贴(不断完善中)

    1. 关于 SKShapeNode 刚接触SpriteKit时,看到这个类,以为它会比SKSpriteNode更为轻量级,但其实不是: Shape nodes are useful for conte ...

  9. CentOS 7 服务器之间ssh无密码登录、传输文件

    在Linux服务器之间使用ssh命令向另一个Linux服务器发送执行指令是需要输入密码     ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一 ...

  10. Url解码和编码 escape()、encodeURI()、encodeURIComponent()区别详解

    Server.UrlDecode;解码 Server.UrlEncode;编码 url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value ...