首页 > 代码库 > JavaBean

JavaBean

条件

1.java类

2.无参构造函数

3.成员变量都是private

4.可以提供public get set

------------------------------------------

单例:

1.private构造函数

2.private static 实例对象

3.public static 对象访问方法

--------------------------------------------

 

JavaBean属性

1.必须小写字母开始

2.属性可以提供public的get和set方法

*命名规则:name, getName, setName

--------------------------

实际开发中,使用Model2,所有javaben相关的标签使用非常少

-------------------------

内省是什么?

JDK提供的一套JavaBean操作API

基于反射技术的。

 

javaBean的属性计算方法

1.Introspector类的getBeanInfo()方法

BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);

Person{

name,age

getName

getAge

setName

setAge

}

BeanInfo里面

1.getMethodDescriptors()

2.getProperyDescriptors()  -------重点

//获得所有javaben属性

PropertyDescriptor[] pd= beanInfo.getPropertyDescriptors();

//每一个属性描述代表javaben的一个属性

sysout(pd.length); //4个

因为javaben属性不是通过成员变量计算的,而是通过get和set方法计算的。

例如:getName ------去掉get,将Name首字母小写,得到name属性。

以此类推,所以有4个。

 

每一个对象都继承Object,继承getClass()方法 --得到class属性

 

------------------------

BeanUtils一套开发包

BeanUtils.populate(person,  request.getParameterMap());

如果在Person类添加特殊Date类型,对于特殊类型如何封装?

1.自定义转换器----需要实现Converter接口

2.在调用populate方法前,注册转换器

ConvertUtils.register(Converter converter, Class clazz);

 

结论:

1.如果form参数是String类型,javabean属性String类型----调用BeanUtils.populate将fomr数据封装

2.如果javabean属性类型不是string,将form数据封装javaben  需要转换器----在BeanUtils API提供很多默认转换器

3.如果需要转换类型非常特殊,通过自定义转换器完成。定义类实现接口Converter,实现convert方法

在populate调用之前通过ConvertUtils.register注册转换器