=======================
©Copyright 蕃薯耀 2021-01-22
http://fanshuyao.iteye.com/
import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; public class UrlUtils { 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 = "="; /** * 获取链接的参数 * @param url 链接 * @return */ public static LinkedHashMap<String, String> getParamsMap(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<String, String> paramsMap = new LinkedHashMap<String, String>(); 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(), ""); } } } } return paramsMap; } } } return null; } /** * 向url链接追加参数(会覆盖已经有的参数) * @param url 链接地址 * @param params LinkedHashMap<String, String> 参数 * @param isOverride 是否覆盖参数,true表示将新参数覆盖链接原参数,false不覆盖 * @return */ public static String addParams(String url, LinkedHashMap<String, String> params, boolean isOverride){ if(StringUtils.isBlank(url)){ return ""; }else if(params == null || params.size() < 1){ return url.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<String, String> paramsMapInUrl = getParamsMap(url); if(paramsMapInUrl == null){ paramsMapInUrl = new LinkedHashMap<String, String>(); } if(!isOverride){ //移除Url链接已经存在的参数 LinkedHashMap<String, String> newParams = new LinkedHashMap<String, String>(params.size()); for (Map.Entry<String, String> entry : params.entrySet()) { if(!StringUtils.isBlank(entry.getKey())){ newParams.put(entry.getKey().trim(), entry.getValue()); } } for (Map.Entry<String, String> entry : newParams.entrySet()) { for (Map.Entry<String, String> urlEntry : paramsMapInUrl.entrySet()) { if(!StringUtils.isBlank(entry.getKey())){ if(entry.getKey().trim().equals(urlEntry.getKey())){ params.remove(entry.getKey().trim()); } } } } } for (Map.Entry<String, String> entry : params.entrySet()) { paramsMapInUrl.put(entry.getKey().trim(), entry.getValue()); } //重新拼接链接 if(paramsMapInUrl != null && paramsMapInUrl.size() > 0){ StringBuffer paramBuffer = new StringBuffer(baseUrl); paramBuffer.append(QUESTION_MARK); Set<String> 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); return paramBuffer.toString(); } return baseUrl; } } /** * 向url链接追加参数(单个) (会覆盖已经有的参数) * @param url 链接地址 * @param name String 参数名 * @param value String 参数值 * @param isOverride 是否覆盖参数,true表示将新参数覆盖链接原参数,false不覆盖 * @return */ public static String addParam(String url, String name, String value, boolean isOverride){ if(StringUtils.isBlank(url)){ return ""; }else if(StringUtils.isBlank(name)){ return url.trim(); }else{ LinkedHashMap<String, String> params = new LinkedHashMap<String, String>(); params.put(name.trim(), value); return addParams(url, params, isOverride); } } /** * 向url链接追加参数(单个) (会覆盖已经有的参数) * @param url 链接地址 * @param name String 参数名 * @param value String 参数值 * @return */ public static String addParam(String url, String name, String value){ return addParam(url, name, value, true); } /** * 向url链接追加参数(单个) (不会覆盖已经有的参数) * @param url 链接地址 * @param name String 参数名 * @param value String 参数值 * @return */ public static String addParamNotExist(String url, String name, String value){ return addParam(url, name, value, false); } /** * 向url链接追加参数(会覆盖已经有的参数) * @param url 链接地址 * @param params LinkedHashMap<String, String> 参数 * @return */ public static String addParams(String url, LinkedHashMap<String, String> params){ return addParams(url, params, true); } /** * 向url链接追加参数(不会覆盖已经有的参数) * @param url 链接地址 * @param params LinkedHashMap<String, String> 参数 * @return */ public static String addParamsNotExist(String url, LinkedHashMap<String, String> params){ return addParams(url, params, false); } /** * 移除url链接的多个参数 * @param url String 链接地址 * @param paramNames String... 参数 * @return */ public static String removeParams(String url, String... paramNames){ if(StringUtils.isBlank(url)){ return ""; }else if(paramNames == null || paramNames.length < 1){ return url.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? return url; }else{ LinkedHashMap<String, String> 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 = new StringBuffer(baseUrl); paramBuffer.append(QUESTION_MARK); Set<String> 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); return paramBuffer.toString(); } return baseUrl; } } return url; } } public static void main(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<String> params = new ArrayList<String>(); 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<String, String> paramsMap = new LinkedHashMap<String, String>(); 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)); } }
=======================
©Copyright 蕃薯耀 2021-01-22
http://fanshuyao.iteye.com/
相关推荐
java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java ...
总结来说,Java中处理URL带请求参数(GET/POST)主要依赖`java.net`包下的类进行网络通信,而在Servlet环境中,通过`HttpServletRequest`提供的方法可以方便地获取请求的URL和参数。在实际应用中,这些基础知识对于...
在这个例子中,我们需要先下载并配置ChromeDriver,然后创建一个ChromeOptions对象,添加Headless模式和其他参数。之后,启动一个新的ChromeDriver实例,导航到目标URL,等待页面加载,然后执行JavaScript的`window....
这个名为"java短链接生成.zip"的压缩包文件提供了一个基于SpringBoot框架的Java实现,用于生成短链接。让我们深入探讨一下这个项目的核心知识点,以及如何利用它来创建和管理短链接。 首先,我们要了解SpringBoot。...
本资源是java开发的常用工具类,包括01.DTD约束文档,02.Schema约束文档,c3p0,commons-dbutils-1.6,commons-io-2.4,commons-pool-1.5.6,mysql-connector-java-5.1.37
Java实现的进制转换工具类完整示例 Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制...
Java工具类,它不仅实现了MD5加密,更创新性地接纳String... inputStrs,让你能一次性加密多个字符串。 1. 一键加密,多值无忧 告别繁杂,拥抱简洁。我们的Java MD5加密工具类以String... inputStrs为武器,打破了...
该工具类是Java编写下载即可使用,该工具类中有生成各种长度的订单号,有英文数字混合的,有数字的
综上所述,这个"java web 修改request携带的参数信息"程序利用Filter技术,对HTTP请求中的参数进行动态修改,以适应特定的需求。在实际开发中,我们需要根据具体业务场景谨慎使用,确保不影响整体应用的稳定性和效率...
java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码...
Java工具类库是Java开发中的重要组成部分,它们提供了一系列预定义的函数,帮助开发者更高效地处理各种常见任务。在Java中,工具类通常被组织在各种不同的包下,如`java.util`、`java.lang`、`java.io`等。这些工具...
在这个“金蝶接口对接java工具类.zip”压缩包中,包含两个关键文件:InvokeHelper.java和InvokeTest.java,它们是实现金蝶接口对接的核心工具类。 InvokeHelper.java文件通常是用来封装调用金蝶接口的具体逻辑。在...
Java工具类是开发过程中不可或缺的一部分,它们提供了许多实用的功能,帮助开发者提高代码的效率和可维护性。Apache Commons Lang和BeanUtils是两个非常著名的Java工具库,由Apache软件基金会开发和维护。这两个库...
添加文字水印的工具类,自己去下JAR包,MAVEN的网站http://mvnrepository.com/
java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...
java util工具类4java util工具类4java util工具类4java util工具类4ssss
Java后台生成二维码工具类
综上所述,Echarts-java资源工具类是一个帮助Java开发者更方便地生成和使用Echarts图表的工具,它结合了Echarts的JavaScript库和Java的封装库,实现了前后端的有效协同,提升了数据可视化的开发效率。通过理解和运用...
Java反射调用是Java语言提供的一种强大的动态类型机制,它允许程序在运行时检查并使用类的信息,包括类的方法、属性以及构造器等。在Java中,反射是通过`java.lang.reflect`包中的类实现的,如`Class`、`Constructor...
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...