java 解析URL里的主域名及参数工具类
java 解析URL里的协议及参数工具类,解析URL中的主域名,并统一把协议修改成http或去掉协议
public class UrlDomainUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(UrlDomainUtils.class);
/**
* 获取主域名,即URL头
* @param url
* @return
*/
public static String getDomainHost(String url){
String pattern = "^((http://)|(https://))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(/)";
Pattern p = Pattern.compile(pattern);
String line = url;
Matcher m = p.matcher(line);
if(m.find()){
//匹配结果
String domain = m.group();
LOGGER.info("解析的URL主域名是------------>{} 原始url is {}" ,domain,url);
domain = domain.replace("https","http");
LOGGER.info("修改解析出的URL主域名的协议成http------------>{} 原始url is {}" ,domain,url);
// domain = domain.replace("http://","");
// LOGGER.info("修改解析出的URL主域名后去掉协议------------>{} 原始url is {}" ,domain,url);
return domain;
}
LOGGER.info("未找到的URL主域名 原始url is {}" ,url);
return null;
}
/**
* 获取主域名,即URL头
* @param url
* @param key url中的参数key
* @return
*/
public static Map<String, String> parseURLParam(String URL, String key) {
Map<String, String> mapRequest = new HashMap<String, String>(); String[] arrSplit = null; String strUrlParam = TruncateUrlPage(URL);
if (strUrlParam == null) {
return mapRequest;
}
//每个键值为一组
arrSplit = strUrlParam.split("[&]");
for (String strSplit : arrSplit) {
String[] arrSplitEqual = null;
arrSplitEqual = strSplit.split("[=]"); //解析出键值
if (arrSplitEqual.length > 1) {
//正确解析
if(key.equals(arrSplitEqual[0])){
mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);
break;
} } else {
if (arrSplitEqual[0] != "") {
//只有参数没有值,不加入
mapRequest.put(arrSplitEqual[0], "");
}
}
}
return mapRequest;
}
/**
* 截取URL中的?之后的部分
* @param strUrl
* @return
*/
private static String TruncateUrlPage(String strURL) {
String strAllParam = null;
String[] arrSplit = null; strURL = strURL.trim(); arrSplit = strURL.split("[?]");
if (strURL.length() > 1) {
if (arrSplit.length > 1) {
if (arrSplit[1] != null) {
strAllParam = arrSplit[1];
}
}
}
return strAllParam;
}
public static void main(String[] args) {
String url = "https://www.baidu.com/s?wd=%E6%B5%8B%E8%AF%95&rsv_spt=1&rsv_iqid=0xeb51775c000b6302&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=6&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&inputT=928&rsv_sug4=3731";
getDomainHost(url);
}
}
java 解析URL里的主域名及参数工具类的更多相关文章
- Java获取URL中的顶级域名domain的工具类
方式一: import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import jav ...
- java获取request中的参数、java解析URL问号后的参数
java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...
- Java中创建操作文件和文件夹的工具类
Java中创建操作文件和文件夹的工具类 FileUtils.java import java.io.BufferedInputStream; import java.io.BufferedOutput ...
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- java提取url里的域名
使用java标准类库java.net.URL java.net.URL url = new java.net.URL("http://blog.csdn.net/xxx.png") ...
- Java开发小技巧(五):HttpClient工具类
前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...
- 《Java并发编程的艺术》第6/7/8章 Java并发容器与框架/13个原子操作/并发工具类
第6章 Java并发容器和框架 6.1 ConcurrentHashMap(线程安全的HashMap.锁分段技术) 6.1.1 为什么要使用ConcurrentHashMap 在并发编程中使用Has ...
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...
- Java中windows路径转换成linux路径等工具类
项目中发现别人写好的操作系统相关的工具类: 我总结的类似相关博客:http://www.cnblogs.com/DreamDrive/p/4289860.html import java.net.In ...
随机推荐
- jsch通过SSH2执行linux命令
public class SSHUtils { private Channel channel; private Session session = null; private int timeout ...
- zabbix获取到的数值大于1000之后自动转换成1k
问题:zabbix在取到的值很大时会自动变成K,M,G 解决方法: 1.修改/var/www/html/zabbix/include/func.inc.php文件(这个文件不一定在这,自己find找下 ...
- 从结构和数字看OO——面向对象设计与构造第一章总结
不知不觉中,我已经接触OO五周了,顺利地完成了第一章节的学习,回顾三次编程作业,惊喜于自身在设计思路和编程习惯已有了一定的改变,下面我将从度量分析.自身Bug.互测和设计模式四个方向对自己第一章的学习 ...
- (转)mysql语句
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- echart曲线图标识最大值、最小值、平均值
option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAx ...
- maven解决大项目打包慢的问题
裁剪反应堆 -am, --also-make 同时构建所列模块的依赖模块.必须和-pl同时使用.如 mvn -pl test install -am ,将同时构建test的依赖模块. -amd, - ...
- Nginx和php交互的两种方式
Unix socket 也叫IPC socket 也就是进程间通信套接字用于同一台主机上的不同进程间交换数据 TCP socket IP socket要利用主机的传输层(tcp),可以用于同一台主机 ...
- one_day_one_linuxCmd---sz命令
<坚持每天学习一个 linux 命令,今天我们来学习 sz && rz 命令> 前言:我们一般通过 ssh 客户端来进行远程登录和管理的,windows主机使用 ssh 登 ...
- POJ 1850:Code 组合数学
Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8710 Accepted: 4141 Description ...
- [NSConcreteValue doubleValue]: unrecognized selector sent to instance
今天需求说要给在进入某个页面给某个按钮加上放大效果,心想这还不简单,于是三下五除二的把动画加上提交测试了. 下面是动画的代码 NSTimeInterval time = CACurrentMediaT ...