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

时间: 2024-11-03 05:47:04

html字符串转义的相关文章

是否采用Sybase形式的自动字符串转义(用 &#39;&#39; 表示 &#39;)

;; 关于php.ini ;; ; 这个文件必须命名为'php.ini'并放置在httpd.conf中PHPINIDir指令指定的目录中. ; 最新版本的php.ini可以在下面两个位置查看: ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co ;; 语法 ;; ; 该文件的语法非常简单.空白

PHP字符串转义

php字符串转义函数addslashes() 函数说明:用于对特殊字符加上转义字符,返回一个字符串 返回值:一个经过转义后的字符串 例子: $str = "what's your name?"; echo addslashes($str);//输出:what\'s your name?

C语言笔记-字符串+转义符(写起来想砸键盘)

转义符真心写起来好麻烦... 代码: 1 #include <stdio.h> 2 int main() 3 { 4 printf("sizeof(\"123\") =%u\n",(unsigned)sizeof("123")); 5 //结果的"在字符串字面量里要写成\" 6 printf("sizeof(\"AB\\tC\") =%u\n",(unsigned)sizeo

【Javaweb】后台的字符串转义,入库之前记得先对字符串转义防止sql注入问题

在<[JavaScript]某些字符不转义可以导致网页崩溃与涉及转义字符的显示方法>(点击打开链接)提及到一种表单之前,必须把表单的输入框的内容转义的方法,但是,其实这种字符串的转义更加应该放在后台中进行.这样同时能够有效地防止sql注入的问题. 所谓的sql注入是什么呢?比如,你做了一个登录功能什么的.你必须把根据用户输入的用户名,查询存放在数据库的密码的,然后与密码比对是不是? select语句一般这样写select username,password from userinfo表 whe

react将字符串转义成html语句

在使用reactjs库的时候,会遇到将一段html的字符串,然后要将它插入页面中以html的形式展现,然而直接插入的话页面显示的就是这段字符串,而不会进行转义,可以用一下方法插入,便可以html的形式展现: <div dangerouslySetInnerHTML={{__html: "<p>爱死费崇政</p>"}} /> 文章来自:https://blog.csdn.net/fay462298322/article/details/71514030

python防止字符串转义

部分转自:https://www.cnblogs.com/hellofengying/p/10183057.html 今天再打开文件名时,出现了错误,如下: In [4]: path='D:\Code\PythonWorkPlace\PythonProject\pydata-book-2nd-edition\data sets\bitly_usagov\example.txt' In [5]: open(path).readline() -----------------------------

js中直接对字符串转义-用于solr ulr 关键词转义

js代码 /* * 获取UTC格式的字符串,参数必须是 */var solrDateFormat = function (o){    var date;    if(typeof o == 'string'){        date = new Date(o);    }else if(o instanceof Date){        date = o;    }else{        return '';    }    return date.getUTCFullYear() +

关于字符串转义的代码

字符 十进制 转义字符 " " " & & & < < < > > > 不断开空格(non-breaking space)    

Freemarker输出json和java字符串以及javascript代码转义

Java 语言规则的字符串转义:${content?j_string} JavaScript 语言规则的字符串转义:${content?js_string} JSON 规则的字符串转义:${content?json_string} 文档:http://freemarker.org/docs/ref_builtins_string.html#ref_builtin_j_string