先定义数据类型
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