Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 301|回复: 0

[jsp学习]利用反射过滤对象的字符串字段中的HTML字符

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-2 12:21:49 | 显示全部楼层 |阅读模式
    对于封装好的 form 以及 pojo 层对象的Strng字段进行HTML字符过滤。
    思路:
    1 通过传入对象 ,对象类型名, 获取出对象自己的getter and setter 方法, 并将其对应到 map 中
    2 判断 其get方法的返回值类型, 若是string 类型 则调用对应属性的getter
    3 将得到的字符串通过StringFilte 进行过滤后 ,调用对象的setter 将其保存到对象中完成过滤。

    1. import java.util.*;
    2. import java.lang.reflect.*;
    3. public class SuperFilter {
    4.   private Object obj; // 传入的对象
    5.   private List< String> Methodname = new ArrayList< String>(); // 方法名
    6.   private Map< String, Mobj> map = new HashMap< String, Mobj>();
    7.   private List< Method> getList = new ArrayList< Method>(); // get 方法列表
    8.   private List< Method> setList = new ArrayList< Method>();// set 方法列表
    9.   public SuperFilter(Object obj, Class< ?> cla) {
    10.     this.obj = obj;
    11.     String style = cla.getName();
    12.     MethodSorter(obj, style);
    13.     MethodFilter();
    14.   }
    15.   public SuperFilter(Object obj, String style) {
    16.     this.obj = obj;
    17.     MethodSorter(obj, style);
    18.     MethodFilter();
    19.   }
    20.   private void MethodSorter(Object o, String name) {
    21.     Method methods[] = null;
    22.     try {
    23.       methods = Class.forName(name).getDeclaredMethods();
    24.     } catch (SecurityException e) {
    25.       e.printStackTrace();
    26.     } catch (ClassNotFoundException e) {
    27.       e.printStackTrace();
    28.     }
    29.     for (int i = 0; i < methods.length; i++) {
    30.       Method m = methods[i];
    31.       if (m.getName().startsWith("get")) {
    32.         getList.add(m);
    33.         String tempname = m.getName();
    34.         Methodname.add(tempname.substring(3));
    35.       }
    36.       if (m.getName().startsWith("set")) {
    37.         setList.add(m);
    38.       }
    39.     }
    40.     for (int i = 0; i < Methodname.size(); i++) {
    41.       String temp = Methodname.get(i);
    42.       for (int m = 0; m < setList.size(); m++) {
    43.         Method met = setList.get(m);
    44.         if (met.getName().endsWith(temp)) {
    45.           map.put(temp, new Mobj(getList.get(i), met));
    46.         }
    47.       }
    48.     }
    49.   }
    50.   public void MethodFilter() {
    51.     for (int i = 0; i < Methodname.size(); i++) {
    52.       Mobj mobj = map.get(Methodname.get(i));
    53.       Method methodget = mobj.getGetMethod();
    54.       Method methodset = mobj.getSetMethod();
    55.       try {
    56.         if (String.class.isInstance(methodget.invoke(obj, null))) {
    57.           String temp = (String) methodget.invoke(obj, null);
    58.         //  System.out.println("~~~~~~~~~~~~~~~~~~");
    59.           System.out.println(temp);
    60.         //  System.out.println("~~~~~~~~~~~~~~~~~~");
    61.           String tempAfterFilter = StringFilter.filterHtml(temp);
    62.           methodset.invoke(obj, tempAfterFilter);
    63.         }
    64.       } catch (IllegalArgumentException e) {
    65.         e.printStackTrace();
    66.       } catch (IllegalAccessException e) {
    67.         e.printStackTrace();
    68.       } catch (InvocationTargetException e) {
    69.         e.printStackTrace();
    70.       }
    71.     }
    72.   }
    73.   protected class Mobj {
    74.     Method getMethod;
    75.     Method setMethod;
    76.     public Mobj(Method getMethod, Method setMethod) {
    77.       this.getMethod = getMethod;
    78.       this.setMethod = setMethod;
    79.     }
    80.     public Method getSetMethod() {
    81.       return setMethod;
    82.     }
    83.     public void setSetMethod(Method setMethod) {
    84.       this.setMethod = setMethod;
    85.     }
    86.     public Method getGetMethod() {
    87.       return getMethod;
    88.     }
    89.     public void setGetMethod(Method getMethod) {
    90.       this.getMethod = getMethod;
    91.     }
    92.   }
    93. }
    复制代码


       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/2/122148875.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-1 17:57 , Processed in 0.380990 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表