UrlUtils工具类,Java URL工具类,Java URL链接工具类

UrlUtils工具类,Java URL工具类,Java URL链接工具类

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

?Copyright 蕃薯耀 2017年7月15日

http://www.cnblogs.com/fanshuyao/

Java代码  

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.Set;
  4. public class UrlUtils {
  5. /**
  6. * 向url链接追加参数
  7. * @param url
  8. * @param params Map<String, String>
  9. * @return
  10. */
  11. public static String appendParams(String url, Map<String, String> params){
  12. if(StrUtils.isBlank(url)){
  13. return "";
  14. }else if(StrUtils.isEmptyMap(params)){
  15. return url.trim();
  16. }else{
  17. StringBuffer sb = new StringBuffer("");
  18. Set<String> keys = params.keySet();
  19. for (String key : keys) {
  20. sb.append(key).append("=").append(params.get(key)).append("&");
  21. }
  22. sb.deleteCharAt(sb.length() - 1);
  23. url = url.trim();
  24. int length = url.length();
  25. int index = url.indexOf("?");
  26. if(index > -1){//url说明有问号
  27. if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com?
  28. url += sb.toString();
  29. }else{//情况为:http://wwww.baidu.com?aa=11
  30. url += "&" + sb.toString();
  31. }
  32. }else{//url后面没有问号,如:http://wwww.baidu.com
  33. url += "?" + sb.toString();
  34. }
  35. return url;
  36. }
  37. }
  38. /**
  39. * 向url链接追加参数(单个)
  40. * @param url
  41. * @param name String
  42. * @param value String
  43. * @return
  44. */
  45. public static String appendParam(String url, String name, String value){
  46. if(StrUtils.isBlank(url)){
  47. return "";
  48. }else if(StrUtils.isBlank(name)){
  49. return url.trim();
  50. }else{
  51. Map<String, String> params = new HashMap<String, String>();
  52. params.put(name, value);
  53. return appendParams(url, params);
  54. }
  55. }
  56. /**
  57. * 移除url链接的多个参数
  58. * @param url String
  59. * @param paramNames String[]
  60. * @return
  61. */
  62. public static String removeParams(String url, String... paramNames){
  63. if(StrUtils.isBlank(url)){
  64. return "";
  65. }else if(StrUtils.isEmptyArray(paramNames)){
  66. return url.trim();
  67. }else{
  68. url = url.trim();
  69. int length = url.length();
  70. int index = url.indexOf("?");
  71. if(index > -1){//url说明有问号
  72. if((length - 1) == index){//url最后一个符号为?,如:http://wwww.baidu.com?
  73. return url;
  74. }else{//情况为:http://wwww.baidu.com?aa=11或http://wwww.baidu.com?aa=或http://wwww.baidu.com?aa
  75. String baseUrl = url.substring(0, index);
  76. String paramsString = url.substring(index + 1);
  77. String[] params = paramsString.split("&");
  78. if(!StrUtils.isEmptyArray(params)){
  79. Map<String, String> paramsMap = new HashMap<String, String>();
  80. for (String param : params) {
  81. if(!StrUtils.isBlank(param)){
  82. String[] oneParam = param.split("=");
  83. String paramName = oneParam[0];
  84. int count = 0;
  85. for(int i=0; i<paramNames.length; i++){
  86. if(paramNames[i].equals(paramName)){
  87. break;
  88. }
  89. count ++;
  90. }
  91. if(count == paramNames.length){
  92. paramsMap.put(paramName, (oneParam.length > 1)?oneParam[1]:"");
  93. }
  94. }
  95. }
  96. if(!StrUtils.isEmptyMap(paramsMap)){
  97. StringBuffer paramBuffer = new StringBuffer(baseUrl);
  98. paramBuffer.append("?");
  99. Set<String> set = paramsMap.keySet();
  100. for (String paramName : set) {
  101. paramBuffer.append(paramName).append("=").append(paramsMap.get(paramName)).append("&");
  102. }
  103. paramBuffer.deleteCharAt(paramBuffer.length() - 1);
  104. return paramBuffer.toString();
  105. }
  106. return baseUrl;
  107. }
  108. }
  109. }
  110. return url;
  111. }
  112. }
  113. public static void main(String[] args) {
  114. /*String a = "http://wwww.baidu.com";
  115. String b = "http://wwww.baidu.com?";
  116. String c = "http://wwww.baidu.com?aa=11";
  117. System.out.println("a="+appendParam(a, "bb", "1"));
  118. System.out.println("b="+appendParam(b, "bb", "1"));
  119. System.out.println("c="+appendParam(c, "bb", "1"));*/
  120. String d = "http://wwww.baidu.com?aa";
  121. String e = "http://wwww.baidu.com?aa=11&bb=22&cc=33";
  122. String f = "http://wwww.baidu.com?aa=11&bb=22&cc=33&dd=";
  123. String g = "http://wwww.baidu.com?aa=11&bb=22&cc=33&dd";
  124. /*List<String> params = new ArrayList<String>();
  125. params.add("aa");
  126. System.out.println("d="+removeParams(d, params));
  127. params.add("bb");
  128. System.out.println("e="+removeParams(e, params));
  129. params.add("cc");
  130. System.out.println("f="+removeParams(f, params));
  131. params.add("dd");
  132. System.out.println("g="+removeParams(g, params));*/
  133. System.out.println("g="+removeParams(g, "cc","aa"));
  134. }
  135. }

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

?Copyright 蕃薯耀 2017年7月15日

http://www.cnblogs.com/fanshuyao/

时间: 2024-08-02 11:00:35

UrlUtils工具类,Java URL工具类,Java URL链接工具类的相关文章

java打开文件夹(含判断操作系统工具类和解压缩工具类)

1.Runtime.getRuntime().exec("explorer D:\\Java"); 2.java.awt.Desktop.getDesktop().open(new File("D:\\Java")); 4.java.awt.Desktop.getDesktop().browse(...) 3. try { String[] cmd = new String[5]; cmd[0] = "cmd"; cmd[1] = "/

Java从零开始学二十四点(集合工具类Collections)

一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二.Collections类的常用方法及常量 No. 方法 类型 描述 1 public static final List EMPTY_LIST 常量 返回一个空的List集合 2 public static final Set EMPTY_SET 常量 返回空的Set集合 3 public sta

java关闭资源,自制关闭资源工具类

在网上看到一篇关于关闭资源的正确方式:http://blog.csdn.net/bornforit/article/details/6896775 该博文中的总结: (1)使用finally块来关闭物理资源(非托管资源),保证关闭操作始终会被执行: (2)关闭每个资源之前首先保证引用该资源的引用变量不为null: (3)为每个物理资源使用单独的trycatch块关闭资源,保证关闭资源时引发的异常不会影响其他资源的关闭. 在资源过多的时候,我们要在finally块中写很多的非空判断.以及try-c

java与javascript对cookie操作的工具类

Java对cookie的操作 package cn.utils; import java.util.HashMap; import java.util.Map; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 操作cookie的工具类(默认cookie的有效路径为"/")

java md5 sha 加密 的使用方法 工具类 MessageDigest

package test; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * 加密工具类 * @author gxd * */ public class EncriptUtil { public static void main(String[] args) { String str = "我爱你23" ; System.out.println(Encript

java二维码编码和解析工具类

用到两个jar包: QRCode.jar Qrcodeen.jar package com.banmacoffee.utils; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; imp

Java线程与并发编程实践----并发工具类与Executor框架

java5之前,我们使用诸如synchronized,wait(),notify()方法对线程的操作属于对 底层线程的操作,这样会出现很多的问题: 低级的并发原语,比如synchronized,wait(),notify()经常难以正确使用.误用会导致 竞态条件,线程饿死,死锁等风险. 泰国依赖synchronized会影响程序性能以及程序的可扩展性 开发者经常需要高级线程结构,如线程池,信号量.java对底层线程的操作不包含这些结. 为解决这些问题,java5引入并发工具类,该工具类主要有下面

Java语言Lang包下常用的工具类介绍_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现. 在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Webs

Java连载71-二分查找和Arrays工具类

一.二分法查找 1.二分法查找是建立在已经排序的基础之上的 2.程序分析是从下到大?排序. 3.这个数组中没有重复的元素?. package com.bjpowernode.java_learning; ? public class D71_1_ { public static void main(String[] args) { int[] a1 = {1,5,8,9,11,25,45,55}; int destElement = 29; int index = binarySearch(a1