鱼C论坛

 找回密码
 立即注册
查看: 2337|回复: 0

[学习笔记] JSP&Servlet21

[复制链接]
发表于 2017-8-16 08:25:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
                Field
                Field表示类的成员变量,可以是实例变量,也可以是静态变量。
                 
                        5.1获取Field对象
                        获取Field对象需要使用Class对象,下面是Class类的API:
                        l Field getField(String name):通过名字获取公有成员变量的反射对象,包含父类中声明的公有成员变量;
                        l Field[] getFields():获取所有公有成员变量反射对象,包含父类中声明的公有成员变量;
                        l Field getDeclaredField(String name):通过名字获取本类中某个成员变量,包含本类的private成员变量,但父类中声明的任何成员变量都不包含;
                        l Field[] getDeclaredFields():获取本类中声明的所有成员变量,包含private成员变量,但不包含父类中声明的任何成员变量;
                 
                        5.2Field类的常用方法
                        § String getName():获取成员变量名;
                        § Class getDeclaringClass():获取成员变量的类;
                        § Class getType():获取当前成员变量的类型;
                        § Object get(Object obj):获取obj对象的成员变量的值;
                        § void set(Object obj, Object value):设置obj对象的成员变量值为value;
       
       
JavaBeans概述
        JavaBean是一种规范,对类的要求
                1、必须有一个默认构造器  (无参)
                2、提供get/set方法,如果只有get方法,则该属性为只读属性
                3、属性:有get/set方法的成员,或者没有成员,只有get/set方法
                        属性名:由get/set方法决定,而不是成员民名称
                4、boolean类型的属性,它的读方法可以是is开头,也可以是get开头
               
        JavaBean属性是具有getter/setter方法的成员变量。
                • 也可以只提供getter方法,这样的属性叫只读属性;
                • 也可以只提供setter方法,这样的属性叫只写属性;
                • 如果属性类型为boolean类型,那么读方法的格式可以是get或is。例如名为abc的boolean类型的属性,它的读方法可以是getAbc(),也可以是isAbc();
                 
        JavaBean属性名要求:前两个字母要么都大写,要么都小写
       
        内省introspector
        内省类-->Bean信息-->属性描述符-->属性的get/set对应的method ----->可以反射了
                内省的目的是得到Javabean属性的读、写方法的反射对象,通过反射对Javabean属性进行操作的一组API
               
       
        内省获得BeanInfo(提供Javabean的信息)
                方法:
                        getBeanInfo(Class<?> beanClass)
                        在javaBean上进行内省,了解其所有属性、公开的方法和事件
11111.png

                1、通过java.beans.Introspector的getBeanInfo()方法获取java.beans.BeanInfo实例
                BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
               
                BeanInfo是一个JavaBean类型的信息类
                2、BeanInfo类得到所有属性描述符PropertyDescriptor、方法描述符MethodDescriptor
                        利用BeanInfo的方法:
                                1、getMethodDescriptors()
                                        获得Beans MethodDescriptor 数组
                                2、getPropertyDescriptors()
                                        获得Beans PropertyDescriptor 数组
                                       
                       
               
                通过beaninfo得到这个类的所有javabean属性的propertyDescriptor对象,然后通过PropertyDiscrptor
                对象获得这个属性的getter/setter方法的method对象
               
                methodDescriptor类方法:
                        getMethod()
                                获得methodDescriptor封装的方法
                        getParameterDescriptors()
                                获得此MethodDescriptor每个方法参数的ParameterDescriptor
                               
               
                每个PropertyDescriptor对象对应一个JavaBean属性:
                PropertyDescriptor类的方法
                        § String getName():获取JavaBean属性名称;
                        § Method getReadMethod:获取属性的读方法;
                        § Method getWriteMethod:获取属性的写方法
               
               
                commons-beanutils,它是依赖内省完成! 而内省依赖反射
                  * 导包:
                    > commons-beanutils.jar
                    > commons-logging.jar
               
                例子:
                        把map中的属性直接封装到一个bean中
                        Map:{“username”,"zhangsan","password","132465"}
                        当把map的数据封装到一个Javabean中,要求map中的key与bean的属性名相同

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 17:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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