1.引用 org.apache.commons.lang
<!-- 转义处理 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
2.java 代码
import com.alibaba.druid.util.StringUtils;
import org.apache.commons.lang.StringEscapeUtils;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ObjStringUtils {
/***
* 将对象中所有的String类型字段
* 自动转义
* 对象字段中需要有 get及set方法
*
* @param object
* @throws Exception
*/
public static void objUnescapeHtml(Object object) throws Exception {
if(object == null){
return;
}
Class clazz = object.getClass();
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
if ("serialVersionUID".equals(field.getName())) {
continue;
}
if(!"java.lang.String".equals(field.getType().getTypeName())){
continue;
}
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
Method getMethod = pd.getReadMethod();
if(getMethod != null){
Object objValue = getMethod.invoke(object);
if(objValue == null || StringUtils.isEmpty(objValue.toString())){
continue;
}
String newValue = StringEscapeUtils.unescapeHtml(objValue.toString().replace("& ","&"));
Method setMethod = pd.getWriteMethod();
if(setMethod != null){
setMethod.invoke(object, newValue);
}
}
}
}
}
3.调用
ObjStringUtils.objUnescapeHtml(对象)

该博客介绍了一个Java方法,用于遍历对象中所有String类型的字段,并使用Apache Commons Lang的StringEscapeUtils进行HTML转义,确保内容的安全性。这个过程涉及到反射、属性描述符以及方法的调用,旨在增强应用程序的输入安全性。
803

被折叠的 条评论
为什么被折叠?



