首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jdk动态代理(动态生成字节码与反射机制的结合)

    java jdk动态代理其实是动态生成字节码与反射机制的一个结合,说到反射机制很多人都用到过反射,只要得到对应类的Class对象即可,调用方法,获取成员变量等等,那么jdk的动态代理就是在程序运行的过程中,动态的将我们维护的检查性的代码,放在正常的业务代码之前,那么怎么调用我正常的业务代码呢,因为业务可能有很多种,也就是说可能会有不同的类,但是都要执行相同的检查性代码,如我们要取钱,或者是修改身份证,都必须验证通过才可以,这显然是两个类,一个是Money,一个是ID,所以我们在调用正常业务代码的时候,其实不知道我们调用的是谁的代码,这时候就用到反射,通过反射,动态的识别类型,然后再调用方法,如我们要取钱,那么传入的应该是一个Money的实例,通过这个实例的getDeclaredMethod,或者是getMethod就可以,获取对应实例的方法,然后即可动态调用方法,只要在用反射前,加入我们验证的代码即可,这时反射在动态代理中的应用。这部分代码需要我们自己实现InvocationHandler接口,实现其中的invoke方法,在这个方法中,就是我们上述反射的实现。当然为了调用到对应类的方法,我们实现的invocationHandler类中,需要保存我们要代理类的实例。

    02

    多叉树结合JavaScript树形组件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)

    在Web应用程序开发领域,基于Ajax技术的JavaScript树形组件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项。目前市场上常见的JavaScript框架及组件库中均包含自己的树形组件,例如jQuery、Ext JS等,还有一些独立的树形组件,例如dhtmlxTree等,这些树形组件完美的解决了层次数据的展示问题。展示离不开数据,树形组件主要利用Ajax技术从服务器端获取数据源,数据源的格式主要包括JSON、XML等,而这些层次数据一般都存储在数据库中。“无限级树形结构”,顾名思义,没有级别的限制,它的数据通常来自数据库中的无限级层次数据,这种数据的存储表通常包括id和parentId这两个字段,以此来表示数据之间的层次关系。现在问题来了,既然树形组件的数据源采用JSON或XML等格式的字符串来组织层次数据,而层次数据又存储在数据库的表中,那么如何建立起树形组件与层次数据之间的关系,换句话说,如何将数据库中的层次数据转换成对应的层次结构的JSON或XML格式的字符串,返回给客户端的JavaScript树形组件?这就是我们要解决的关键技术问题。本文将以目前市场上比较知名的Ext JS框架为例,讲述实现无限级树形结构的方法,该方法同样适用于其它类似的JavaScript树形组件。

    00

    sql2java:WhereHelper基于Beanshell(bsh)动态生成SQL语句

    BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型、命令、闭包等通用脚本来对其进行拓展。BeanShell不仅仅可以通过运行其内部的脚本来处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码。因为BeanShell是用java写的,运行在同一个虚拟机的应用程序,因此可以自由地引用对象脚本并返回结果。 基于Beanshell可以实现很多有意思的功能,比如最近的工作中为了给前端提供灵活的数据库条件查询,我利用Beanshell的能力,可以实现了WhereHelper用于根据前端提供的参数,动态生成SELECT查询语句,大大简化了代码复杂度。 本文介绍WhereHelper的使用

    03
    领券