⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beanunserializer.java

📁 利用AJAX控制上传文件进度,并生成进度条! 同时增加了新的实现方法,详细信息还请使用者自己体会
💻 JAVA
字号:
package com.bjinfotech.practice.ajax;

import java.io.File;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import com.bjinfotech.util.objecttk.BeanUtils;
import com.bjinfotech.util.objecttk.ObjectReflect;

//需要加上对Collection的处理
public class BeanUnSerializer {
	private Logger logger=Logger.getLogger(BeanUnSerializer.class);
	private BeanUtils bu=new BeanUtils();
	
	public Node readXMLFile(String filePath) throws DocumentException{
		logger.debug("装载xml");
		SAXReader reader=new SAXReader();
		Document rootDoc=reader.read(new File(filePath));
		Node actionNode=rootDoc.selectSingleNode("/ajax-request/action");
		return actionNode;
	}
	public Object loadAction(Node rootNode) throws ClassNotFoundException{
		return BeanUtils.newObject(
				ObjectReflect.loadClass(
						((Element)rootNode).attribute("type").getText()));
	}
	
	private String formatBeanPropertyName(String propertyName){
		if (propertyName.length()>1){
			StringBuffer sb=new StringBuffer(propertyName.substring(0,1).toUpperCase());
			sb.append(propertyName.substring(1));
			return sb.toString();
		}
		else{
			return propertyName.toUpperCase();
		}
	}
	public void loadBean(Node node,Object parentObject) throws SecurityException, NoSuchFieldException{
		List beanList=node.selectNodes("bean");
		//发现bean
		if (beanList.size()>0){
			//处理bean
			logger.debug("发现bean,开始逐一处理");
			for(int i=0;i<beanList.size();i++){
				Element ele=(Element)beanList.get(i);
				//获得bean对象
				Class beanClazz=parentObject.getClass().getDeclaredField(ele.attribute("name").getText()).getType();
				logger.debug("获取bean类型:"+beanClazz);
				Object beanObj=BeanUtils.newObject(beanClazz);
				Class[] paramTypes=new Class[1];
				Object[] paramValues=new Object[1];
				paramTypes[0]=beanClazz;
				paramValues[0]=beanObj;
				//set bean
				bu.callMethod(parentObject, "set"+formatBeanPropertyName(ele.attribute("name").getText()), paramTypes, paramValues);
				loadBean(ele,beanObj);
			}
		}
		List propertyList=node.selectNodes("property");
		for(int i=0;i<propertyList.size();i++){
			Element ele=(Element)propertyList.get(i);
			bu.setBeanFieldValue(parentObject,ele.attribute("name").getText(), ele.getText());
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -