Map<String,Object> arg
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) {
Object v = arg.get(k);
k = urlencode(k);
if(v.getClass().isAssignableFrom(Map.class)) {
String s2 = "";
String sep2 = "";
for(String k2 : ((Map<String,Object>)v).keySet() ){
Object v2 = ((Map<String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2);
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));
}
sep = "&";
}
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) {
Object v = arg.get(k);
k = urlencode(k);
if(v.getClass().isAssignableFrom(Map.class)) {
String s2 = "";
String sep2 = "";
for(String k2 : ((Map<String,Object>)v).keySet() ){
Object v2 = ((Map<String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2);
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));
}
sep = "&";
}
解决方案 »
- websphere6.0 struts1部署异常 但是tomcate和websphere5.1正常
- List l = query.list();时报错,求解
- 【急】将tomcat的应用迁移到WebSphere上后出现不能正常登陆
- 在子容器中如何访问父容器中通过PropertyPlaceholderConfigurer载入的属性值
- struts 的验证错误提示.
- share project 到CVS中出现错误,以致不能commit
- 问一个比较烂的问题:xml 属性中如果有双引号,怎么处理?
- jboss下url传递中文问题!!!!请高手帮忙!!!
- 各位大侠们,沈阳哪几家公司比较不错?
- asp开发的系统如何较好的迁移到J2EE平台?
- 求正则表达式阿
- struts 标签 <html:select>怎么用
aa=11&bb=22这种形式输出
Map <String,Object> arg // 参数映射
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) { //对映射里的每一个key,
Object v = arg.get(k); //取映射里的key对应的value
k = urlencode(k); //转码
if(v.getClass().isAssignableFrom(Map.class)) { //如果取出来的value还是一个映射map,则嵌套遍历取value,每个arg之间用&分割,最后得到形状如username=kkk&password=lll这样的url
String s2 = "";
String sep2 = "";
for(String k2 : ((Map <String,Object>)v).keySet() ){
Object v2 = ((Map <String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2);
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));
}
sep = "&";
}
应该改成if (Map.class.isAssignableFrom(v.getClass()))
前面的类是后面类的父类或接口都返回True这样比较合理。
假设数据是:Map<String, Object> arg = new HashMap<String, Object>();
Map<String, Object> arg1 = new HashMap<String, Object>();
arg1.put("cc", "33");
arg1.put("dd", "44");
arg.put("aa", 11);
arg.put("bb", 22);
arg.put("arg1", arg1);输出为:arg1[dd]=44&arg1[cc]=33&aa=11&bb=22
Map <String,Object> arg;
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) {//循环arg里的数据
Object v = arg.get(k);//得到具体某个value
k = urlencode(k);
if(v.getClass().isAssignableFrom(Map.class)) { //如果value值类型为Map
String s2 = "";
String sep2 = "";
for(String k2 : ((Map <String,Object>)v).keySet() ){//再循环类型为Map的value
Object v2 = ((Map <String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2); //key1[key11}=value11&key1[key12]=value12
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));//key2=value2
}
sep = "&";
}
}
最后生成刑如:key1[key11}=value11&key1[key12]=value12&key2=value2
主要是用来分析url后面的参数的