html字符串转义

  1. 先定义数据类型

    1. 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;
          }
      }
  2. 数据类型判断

    1. 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;
          }
      }
  3. 数据处理

    1. 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

你可能感兴趣的:(html字符串转义)