首页 > 代码库 > 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注册转换器