條件
1.java類
2.無參構(gòu)造函數(shù)
3.成員變量都是PRivate
4.可以提供public get set
------------------------------------------
單例:
1.private構(gòu)造函數(shù)
2.private static 實(shí)例對(duì)象
3.public static 對(duì)象訪問方法
--------------------------------------------
JavaBean屬性
1.必須小寫字母開始
2.屬性可以提供public的get和set方法
*命名規(guī)則:name, getName, setName
--------------------------
實(shí)際開發(fā)中,使用Model2,所有javaben相關(guān)的標(biāo)簽使用非常少
-------------------------
內(nèi)省是什么?
JDK提供的一套JavaBean操作API
基于反射技術(shù)的。
javaBean的屬性計(jì)算方法
1.Introspector類的getBeanInfo()方法
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
Person{
name,age
getName
getAge
setName
setAge
}
BeanInfo里面
1.getMethodDescriptors()
2.getProperyDescriptors() -------重點(diǎn)
//獲得所有javaben屬性
PropertyDescriptor[] pd= beanInfo.getPropertyDescriptors();
//每一個(gè)屬性描述代表javaben的一個(gè)屬性
sysout(pd.length); //4個(gè)
因?yàn)閖avaben屬性不是通過成員變量計(jì)算的,而是通過get和set方法計(jì)算的。
例如:getName ------去掉get,將Name首字母小寫,得到name屬性。
以此類推,所以有4個(gè)。
每一個(gè)對(duì)象都繼承Object,繼承g(shù)etClass()方法 --得到class屬性
------------------------
BeanUtils一套開發(fā)包
BeanUtils.populate(person, request.getParameterMap());
如果在Person類添加特殊Date類型,對(duì)于特殊類型如何封裝?
1.自定義轉(zhuǎn)換器----需要實(shí)現(xiàn)Converter接口
2.在調(diào)用populate方法前,注冊(cè)轉(zhuǎn)換器
ConvertUtils.register(Converter converter, Class clazz);
結(jié)論:
1.如果form參數(shù)是String類型,javabean屬性String類型----調(diào)用BeanUtils.populate將fomr數(shù)據(jù)封裝
2.如果javabean屬性類型不是string,將form數(shù)據(jù)封裝javaben 需要轉(zhuǎn)換器----在BeanUtils API提供很多默認(rèn)轉(zhuǎn)換器
3.如果需要轉(zhuǎn)換類型非常特殊,通過自定義轉(zhuǎn)換器完成。定義類實(shí)現(xiàn)接口Converter,實(shí)現(xiàn)convert方法
在populate調(diào)用之前通過ConvertUtils.register注冊(cè)轉(zhuǎn)換器
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注