11215226486368967764
cmcc-2000
10662000
LS
100
123
短息内容
2008-07-11 00:02:17
/**泛型读取request post的XML文件,其中T符合java bean规范**/
package sharesoft;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.cn.BusinessFlow;
public class ReceivePostXML {
private T t;
public ReceivePostXML(InputStream is){
this.is = is;
}
public ReceivePostXML(){
}
public T readXMLLinton(HttpServletRequest request, HttpServletResponse response,Object object){
Document doc = null;
Element root;
BufferedReader br;
T t = (T) object;
try {
FileReader fr=new FileReader("WebRoot/WEB-INF/hell.xml");//测试时使用
//doc=new SAXBuilder().build(request.getReader());//创建Document对象,是具有xml格式的文件
doc=new SAXBuilder().build(fr);//测试时使用
root=doc.getRootElement();//返回根节点
System.out.println(t.getClass().toString());
PropertyDescriptor[] pd=Introspector.getBeanInfo(object.getClass()).getPropertyDescriptors();
//Introspector.getBeanInfo(t.getClass())反射机制得到javabean的属性和公开方法
//BeanInfo.getPropertyDescriptors()得到JavaBean的所有属性
//PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。属性名和值
for(PropertyDescriptor p:pd){
String fieldName=p.getName();
String fieldValue;
if((fieldValue=root.getChildText(fieldName))!=null){//如果子节点的值不为空则执行 ,与此节点相同名字的JavaBean属性,通过一个存储器方法赋值
Method m=p.getWriteMethod();
m.setAccessible(true);
try{
m.invoke(t, fieldValue);
System.out.println("fieldValue: "+fieldValue);
}catch(Exception e){
e.printStackTrace();
}
}
}
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IntrospectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (T) t;
}
public static void main(String[] args) throws FileNotFoundException
{
FileReader fr=new FileReader("WebRoot/WEB-INF/hell.xml");
HttpServletRequestrequest = null;
HttpServletResponseresponse = null;
LinktoneMR businessFlow = new LinktoneMR();
new ReceivePostXML ().readXMLLinton(request, response,businessFlow);
}
}
}