java 动态url_Java URL链接动态添加参数,Java URL链接删除参数,UrlUtils链接参数工具类...

importjava.util.LinkedHashMap;importjava.util.Map;importjava.util.Set;importorg.apache.commons.lang.StringUtils;importorg.apache.log4j.Logger;public classUrlUtils {private static Logger log = Logger.getLogger(UrlUtils.class);public static final String QUESTION_MARK = "?";public static final String AND_MARK = "&";public static final String EQUAL_MARK = "=";/*** 获取链接的参数

*@paramurl 链接

*@return

*/

public static LinkedHashMapgetParamsMap(String url){

log.info("url=" +url);if(StringUtils.isBlank(url)){return null;

}

url=url.trim();int length =url.length();int index =url.indexOf(QUESTION_MARK);if(index > -1){//url说明有问号

if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com?

return null;

}else{//情况为:http://wwww.baidu.com?aa=11或http://wwww.baidu.com?aa=或http://wwww.baidu.com?aa

String baseUrl = url.substring(0, index);

String paramsString= url.substring(index + 1);

log.info("baseUrl=" +baseUrl);

log.info("paramsString=" +paramsString);if(!StringUtils.isBlank(paramsString)){

LinkedHashMap paramsMap = new LinkedHashMap();

String[] params=paramsString.split(AND_MARK);for(String param : params) {if(!StringUtils.isBlank(param)){

String[] oneParam=param.split(EQUAL_MARK);

String paramName= oneParam[0];if(!StringUtils.isBlank(paramName)){if(oneParam.length > 1){

paramsMap.put(paramName.trim(), oneParam[1]);//键可以去空格,值不能去空格

}else{

paramsMap.put(paramName.trim(),"");

}

}

}

}returnparamsMap;

}

}

}return null;

}/*** 向url链接追加参数(会覆盖已经有的参数)

*@paramurl 链接地址

*@paramparams LinkedHashMap 参数

*@paramisOverride 是否覆盖参数,true表示将新参数覆盖链接原参数,false不覆盖

*@return

*/

public static String addParams(String url, LinkedHashMap params, booleanisOverride){if(StringUtils.isBlank(url)){return "";

}else if(params == null || params.size() < 1){returnurl.trim();

}else{

url=url.trim();int index =url.indexOf(QUESTION_MARK);

String baseUrl= "";if(index > -1){

baseUrl= url.substring(0, index);

}else{

baseUrl=url;

}

LinkedHashMap paramsMapInUrl =getParamsMap(url);if(paramsMapInUrl == null){

paramsMapInUrl= new LinkedHashMap();

}if(!isOverride){//移除Url链接已经存在的参数

LinkedHashMap newParams = new LinkedHashMap(params.size());for (Map.Entryentry : params.entrySet()) {if(!StringUtils.isBlank(entry.getKey())){

newParams.put(entry.getKey().trim(), entry.getValue());

}

}for (Map.Entryentry : newParams.entrySet()) {for (Map.EntryurlEntry : paramsMapInUrl.entrySet()) {if(!StringUtils.isBlank(entry.getKey())){if(entry.getKey().trim().equals(urlEntry.getKey())){

params.remove(entry.getKey().trim());

}

}

}

}

}for (Map.Entryentry : params.entrySet()) {

paramsMapInUrl.put(entry.getKey().trim(), entry.getValue());

}//重新拼接链接

if(paramsMapInUrl != null && paramsMapInUrl.size() > 0){

StringBuffer paramBuffer= newStringBuffer(baseUrl);

paramBuffer.append(QUESTION_MARK);

Set set =paramsMapInUrl.keySet();for(String paramName : set) {

paramBuffer.append(paramName).append(EQUAL_MARK)

.append(paramsMapInUrl.get(paramName)== null ? "": paramsMapInUrl.get(paramName))

.append(AND_MARK);

}

paramBuffer.deleteCharAt(paramBuffer.length()- 1);returnparamBuffer.toString();

}returnbaseUrl;

}

}/*** 向url链接追加参数(单个) (会覆盖已经有的参数)

*@paramurl 链接地址

*@paramname String 参数名

*@paramvalue String 参数值

*@paramisOverride 是否覆盖参数,true表示将新参数覆盖链接原参数,false不覆盖

*@return

*/

public static String addParam(String url, String name, String value, booleanisOverride){if(StringUtils.isBlank(url)){return "";

}else if(StringUtils.isBlank(name)){returnurl.trim();

}else{

LinkedHashMap params = new LinkedHashMap();

params.put(name.trim(), value);returnaddParams(url, params, isOverride);

}

}/*** 向url链接追加参数(单个) (会覆盖已经有的参数)

*@paramurl 链接地址

*@paramname String 参数名

*@paramvalue String 参数值

*@return

*/

public staticString addParam(String url, String name, String value){return addParam(url, name, value, true);

}/*** 向url链接追加参数(单个) (不会覆盖已经有的参数)

*@paramurl 链接地址

*@paramname String 参数名

*@paramvalue String 参数值

*@return

*/

public staticString addParamNotExist(String url, String name, String value){return addParam(url, name, value, false);

}/*** 向url链接追加参数(会覆盖已经有的参数)

*@paramurl 链接地址

*@paramparams LinkedHashMap 参数

*@return

*/

public static String addParams(String url, LinkedHashMapparams){return addParams(url, params, true);

}/*** 向url链接追加参数(不会覆盖已经有的参数)

*@paramurl 链接地址

*@paramparams LinkedHashMap 参数

*@return

*/

public static String addParamsNotExist(String url, LinkedHashMapparams){return addParams(url, params, false);

}/*** 移除url链接的多个参数

*@paramurl String 链接地址

*@paramparamNames String... 参数

*@return

*/

public staticString removeParams(String url, String... paramNames){if(StringUtils.isBlank(url)){return "";

}else if(paramNames == null || paramNames.length < 1){returnurl.trim();

}else{

url=url.trim();int length =url.length();int index =url.indexOf(QUESTION_MARK);if(index > -1){//url有问号

if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com?

returnurl;

}else{

LinkedHashMap paramsMap =getParamsMap(url);//删除参数

if(paramsMap != null && paramsMap.size() > 0){for(String paramName : paramNames) {if(!StringUtils.isBlank(paramName)){

paramsMap.remove(paramName.trim());

}

}

}

String baseUrl= url.substring(0, index);//重新拼接链接

if(paramsMap != null && paramsMap.size() > 0){

StringBuffer paramBuffer= newStringBuffer(baseUrl);

paramBuffer.append(QUESTION_MARK);

Set set =paramsMap.keySet();for(String paramName : set) {

paramBuffer.append(paramName).append(EQUAL_MARK).append(paramsMap.get(paramName)).append(AND_MARK);

}

paramBuffer.deleteCharAt(paramBuffer.length()- 1);returnparamBuffer.toString();

}returnbaseUrl;

}

}returnurl;

}

}public static voidmain(String[] args) {/*String a = "http://wwww.baidu.com";

String b = "http://wwww.baidu.com?";

String c = "http://wwww.baidu.com?aa=11";

String d = "http://wwww.baidu.com?aa";

String e = "http://wwww.baidu.com?aa=11&bb=222&cc=33";

String f = "http://wwww.baidu.com?aa=11&bb=222&cc=33&dd=";

String g = "http://wwww.baidu.com?aa=111&bb=222&cc=33&dd";*/

/*List params = new ArrayList();

params.add("aa");

System.out.println("d="+removeParams(d, params));

params.add("bb");

System.out.println("e="+removeParams(e, params));

params.add("cc");

System.out.println("f="+removeParams(f, params));

params.add("dd");

System.out.println("g="+removeParams(g, params));*/

/*System.out.println("g="+removeParams(g, "cc","aa","dd"));

System.out.println("g2="+removeParams(g, "cc","aa","dd"));

System.out.println("d="+removeParams(d, "cc"));

System.out.println("d2="+removeParams(d, "aa"));

System.out.println("a="+removeParams(a, "aa"));

System.out.println("b="+removeParams(b, "aa"));*/

/*System.out.println("a==="+addParam(a, "p", "cc"));

System.out.println("b==="+addParam(b, "p", "cc"));

System.out.println("c==="+addParam(c, "p", "cc"));

System.out.println("d==="+addParam(d, "p", "cc"));*/

/*System.out.println("g1==="+addParam(g, "bb", "000"));

System.out.println("g2==="+addParamNotExist(g, "bb", "000"));*/

/*LinkedHashMap paramsMap = new LinkedHashMap();

paramsMap.put("jj", "j13");

paramsMap.put("kkk", "k1243");

paramsMap.put("mm", "");

paramsMap.put("nn", null);

paramsMap.put("bb", "new");

//System.out.println("a==="+addParams(a, paramsMap));

//System.out.println("b==="+addParams(b, paramsMap));

//System.out.println("c==="+addParams(c, paramsMap));

//System.out.println("d==="+addParams(d, paramsMap));

System.out.println("f1==="+addParams(f, paramsMap));

System.out.println("f2==="+addParamsNotExist(f, paramsMap));*/

//System.out.println("g2="+getParamsMap(g));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值