标签:
先定义数据类型
package com.whereta.common;
/**
 * Created by vincent on 15-9-24.
 */
public enum JavaBasicTypeEnum {
    STRING(String.class),
    INTEGER(Integer.class),
    BOOLEAN(Boolean.class),
    BYTE(Byte.class),
    LONG(Long.class),
    SHORT(Short.class),
    FLOAT(Float.class),
    DOUBLE(Double.class),
    CHAR(Character.class);
    private Class sClass;
    JavaBasicTypeEnum(Class sClass) {
        this.sClass = sClass;
    }
    protected static boolean isBasicType(Class sClass) {
        for (JavaBasicTypeEnum en : JavaBasicTypeEnum.values()) {
            Class aClass = en.getsClass();
            if (aClass.equals(sClass)) {
                return true;
            }
        }
        return false;
    }
    public Class getsClass() {
        return sClass;
    }
    public void setsClass(Class sClass) {
        this.sClass = sClass;
    }
}数据类型判断
package com.whereta.common;
import java.util.*;
/**
 * Created by vincent on 15-9-24.
 */
public class JavaTypeUtils {
    /**
     * 判断是否是基本类型
     * @param obj  输入对象
     * @return
     */
    public static boolean isBasicType(Object obj){
        boolean isBasicType = JavaBasicTypeEnum.isBasicType(obj.getClass());
        return isBasicType;
    }
    /**
     * 判断是否是数组
     * @param obj
     * @return
     */
    public static boolean isArray(Object obj){
        return obj.getClass().isArray();
    }
    /**
     * 判断是否是集合
     * @param obj
     * @return
     */
    public static boolean isCollection(Object obj){
        Set<Class> classSet = getAllExtendAndImplementsClass(obj.getClass());
        for(Class c:classSet){
            if(c.equals(Collection.class)){
                return true;
            }
        }
        return false;
    }
    private static Set<Class> getAllExtendAndImplementsClass(Class c){
        Set<Class> classSet=new HashSet<Class>();
        //获取接口
        Class[] interfaces = c.getInterfaces();
        if(interfaces!=null) {
            classSet.addAll(Arrays.asList(interfaces));
            for(Class in:interfaces){
                classSet.addAll(getAllExtendAndImplementsClass(in));
            }
        }
        //获取父类
        Class superclass = c.getSuperclass();
        if(superclass!=null) {
            classSet.add(superclass);
            classSet.addAll(getAllExtendAndImplementsClass(superclass));
        }
        return classSet;
    }
    /**
     * 判断是否是list
     * @param obj
     * @return
     */
    public static boolean isList(Object obj){
        Set<Class> classSet = getAllExtendAndImplementsClass(obj.getClass());
        for(Class c:classSet){
            if(c.equals(List.class)){
                return true;
            }
        }
        return false;
    }
    /**
     * 判断是否是map
     * @param obj
     * @return
     */
    public static boolean isMap(Object obj){
        Set<Class> classSet = getAllExtendAndImplementsClass(obj.getClass());
        for(Class c:classSet){
            if(c.equals(Map.class)){
                return true;
            }
        }
        return false;
    }
}数据处理
package com.whereta.common;
import org.apache.commons.lang3.StringEscapeUtils;
import java.lang.reflect.Field;
import java.util.*;
/**
 * Created by vincent on 15-9-24.
 */
public class HtmlObjUtil {
    /**
     * 将页面提交的数据字符串进行替换,防止出现页面混乱
     * @param param
     * @return
     * @throws IllegalAccessException
     */
    public static Object replaceStringHtml(Object param) throws IllegalAccessException {
        if (param != null) {
            if (JavaTypeUtils.isBasicType(param)) {
                if (param.getClass().equals(JavaBasicTypeEnum.STRING.getsClass())) {
                    return StringEscapeUtils.escapeHtml4(param.toString());
                }
                return param;
            }
            if (JavaTypeUtils.isArray(param)) {
                Object[] objectArray = (Object[]) param;
                for (int i = 0; i < objectArray.length; i++) {
                    Object object = objectArray[i];
                    if(object==null){
                        continue;
                    }
                    objectArray[i] = replaceStringHtml(object);
                }
                return objectArray;
            }
            if (JavaTypeUtils.isCollection(param)) {
                Collection collection = (Collection) param;
                Collection replaceCollection = new ArrayList();
                Iterator iterator = collection.iterator();
                while (iterator.hasNext()){
                    Object nextObj = iterator.next();
                    if(nextObj==null){
                        continue;
                    }
                    Object o = replaceStringHtml(nextObj);
                    iterator.remove();
                    replaceCollection.add(o);
                }
                collection.addAll(replaceCollection);
                return collection;
            }
            if (JavaTypeUtils.isMap(param)) {
                Map map = (Map) param;
                Set set = map.keySet();
                for (Object obj : set) {
                    Object mapValue = map.get(obj);
                    if(mapValue==null){
                        continue;
                    }
                    Object o = replaceStringHtml(mapValue);
                    map.put(obj, o);
                }
                return map;
            }
            Field[] declaredFields = param.getClass().getDeclaredFields();
            for (Field field : declaredFields) {
                field.setAccessible(true);
                int modifiers = field.getModifiers();
                if(modifiers>=24){
                    continue;
                }
                Object o = field.get(param);
                
                if(o==null){
                    continue;
                }
                Object replaceObj = replaceStringHtml(o);
                if (replaceObj.getClass().equals(JavaBasicTypeEnum.LONG.getsClass())) {
                    field.setLong(param, (Long) (replaceObj));
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.BOOLEAN.getsClass())) {
                    field.setBoolean(param, (Boolean) replaceObj);
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.BYTE.getsClass())) {
                    field.setByte(param, (Byte) replaceObj);
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.CHAR.getsClass())) {
                    field.setChar(param, (Character) replaceObj);
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.DOUBLE.getsClass())) {
                    field.setDouble(param, (Double) replaceObj);
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.FLOAT.getsClass())) {
                    field.setFloat(param, (Float) replaceObj);
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.INTEGER.getsClass())) {
                    field.setInt(param, (Integer) replaceObj);
                } else if (replaceObj.getClass().equals(JavaBasicTypeEnum.SHORT.getsClass())) {
                    field.setShort(param, (Short) replaceObj);
                } else {
                    field.set(param, replaceObj);
                }
            }
            return param;
        }
        return param;
    }
}        通过递归,不断寻找字符串类型的数据转义
git地址:https://git.oschina.net/junyue/JavaUtils
标签:
原文地址:http://my.oschina.net/vincentzhao/blog/514576