81,094
社区成员
发帖
与我相关
我的任务
分享
package com.test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class Demo1 {
public static void main(String[] args){
Men m1=new Men();
m1.setName("王建波");
m1.setGender("男");
m1.setAge("26");
System.out.println(m1.toString());
String sUrl="www.yourweb.com?params="+URLEncoder.encode(m1.toString());
System.out.println("------------------");
System.out.println(sUrl);
System.out.println("------------------");
String sParams=sUrl.substring(sUrl.indexOf('?')+1);
sParams=URLDecoder.decode(sParams);
Men m2=new Men();
try{
m2.initFromString(sParams);
System.out.println(m2.toString());
}catch(Exception e){
e.printStackTrace();
}
}
}
class Men{
private String name="";
private String gender="";
private String age="";
public String toString(){
StringBuffer sb=new StringBuffer();
sb.append("{");
sb.append("name:"+this.name);
sb.append(",gender:"+this.gender);
sb.append(",age:"+this.age);
sb.append("}");
return sb.toString();
}
public void initFromString(String sParams) throws Exception{
Method[] methods=this.getClass().getMethods();
Map mapParams=new HashMap();
Pattern pParams=Pattern.compile("(\\w+):(.*?)(?=\\s*,|\\s*})");
Matcher mParams=pParams.matcher(sParams);
while(mParams.find()){
mapParams.put(
mParams.group(1).toLowerCase(),
mParams.group(2));
}
Pattern pMethod=Pattern.compile("^set(\\w+)$");
Matcher mMethod;
String sKey,sValue;
for(Method m:methods){
mMethod=pMethod.matcher(m.getName());
if(mMethod.find()){
sKey=mMethod.group(1).toLowerCase();
sValue=(String)mapParams.get(sKey);
m.invoke(this,new String[]{sValue});
}
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}