使用RequestUtil解析URL查询参数
来源:互联网 发布:网络文学评论刊号 编辑:程序博客网 时间:2024/05/09 18:20
RequestUtil是Tomcat出品,对URL的查询进行解析。
6.0版本的源码在这里:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/RequestUtil.java?view=markup
新的有8.0,直接改一下上边链接里的版本号就可以。但是6.0版本没有其它依赖,可以直接用,8.0增加了其它功能,依赖其它包。这里我们只需要它的解析功能,所以够用即可。
使用方法很简单,如下例子所示:
String query="name=tom&age=ee&";Map<String, String[]> values = new HashMap<>();try { RequestUtil.parseParameters(values, query, "utf8"); for (Map.Entry<String, String[]> entry : values.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()[0] + ";"); }} catch (UnsupportedEncodingException e) { e.printStackTrace();}
有两点需要注意:
-这里只是解析查询参数,而不是全部的URL。例如URL本来类似于http://www.baidu.com?q=sd&f=3
,这里解析的是?
之后的部分,如果全部提交给它解析,会把http://www.baidu.com?q
当作是一个key;
- 使用的Map类型为Map<String, String[]>
,也就是value是数组格式的。
这里开始搞错了,写成了Map<String, String>
类型,结果一直报错:
[Ljava.lang.String; cannot be cast to java.lang.String
改过来就成。
最后可以来看看RequestUtil的实现,其实主要是一个函数
public static void parseParameters(Map map, byte[] data, String encoding) throws UnsupportedEncodingException { if (data != null && data.length > 0) { int ix = 0; int ox = 0; String key = null; String value = null; while (ix < data.length) { byte c = data[ix++]; switch ((char) c) { case '&': value = new String(data, 0, ox, encoding); if (key != null) { putMapEntry(map, key, value); key = null; } ox = 0; break; case '=': if (key == null) { key = new String(data, 0, ox, encoding); ox = 0; } else { data[ox++] = c; } break; case '+': data[ox++] = (byte)' '; break; case '%': data[ox++] = (byte)((convertHexDigit(data[ix++]) << 4) + convertHexDigit(data[ix++])); break; default: data[ox++] = c; } } //The last value does not end in '&'. So save it now. if (key != null) { value = new String(data, 0, ox, encoding); putMapEntry(map, key, value); } } }
实现不难,省的自己写了。
0 0
- 使用RequestUtil解析URL查询参数
- js解析url查询参数
- 使用Webwork URL参数解析功能
- 将url的查询参数解析成字典对象
- 解析当前页面url,获取查询字符串参数
- 将url的查询参数解析成字典对象
- 将url的查询参数解析成字典对象
- js解析url参数
- URL 参数解析
- JavaScript解析URL参数
- javascript 解析 url 参数
- 解析URL参数
- 解析url获取参数
- 百度URL参数解析
- 解析url参数
- URL参数解析
- URL参数解析
- url参数分割解析
- 类库中的常用的操作数组的方法
- curl分装好的类
- Wampserver
- 让树莓派显示中文
- 浅谈Java设计模式(八)代理模式(Proxy)
- 使用RequestUtil解析URL查询参数
- OAEP及其在OpenSSL中的实现
- css3-立方体3d旋转动画
- Stree
- 第四讲实践 求一个球体体积并输出
- String 字符串拼接方法 concat和+ 效率比较
- 【打CF,学算法——一星级】CodeForces 227B Effective Approach (水题)
- Intent-发短信
- Codeforces 678C Mike and Chocolate Thieves(二分)