标签:apach 规范 简单 name 日常笔记 下载 参数 行数据 method
JavaBean-日常笔记
简单来说,JavaBean是一种符合Java语法的可重用的组件(类)。
Web应用程序中使用的JavaBean一般要满足如下要求:
1)JavaBean成员有:方法(Method)、事件(Event)、属性(property)。
这里的属性是property而不是attribute。
1)attribute:表示状态,常认为字段(Field)是属性attribute。
2)property:也表示状态,但是不是字段,是由类中属性的操作方法(getter/setter)来决定属性名称。
设置属性值:writableMethod:setter方法
获取属性值:readableMethod:getter方法
ex: setName/getName-->属性:name
setAge/getAge-->属性:age
如果数据类型为boolean,则为is方法。
2)内省机制(Introspector):操作(获取/设置)JavaBean中的方法/属性/事件。
使用static BeanInfo getBeanInfo(Class<?> beanClass)来获取指定字节码对象的JavaBean信息对象。
例如现有Person类,含属性(name,age)以及相应的getter和setter方法。
则可以使用Beaninfo bi = Introspector.getBeanInfo(Person.class);获取到Person中的所有属性。
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
常用方法:
1.PropertyDescriptor[ ] getPropertyDescriptors();获取JavaBean中的所有属性描述符。
public class IntrospectorDemo { public static void main(String[] args) throws IntrospectionException { BeanInfo beanInfo = Introspector.getBeanInfo(Person.class); PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : pds) { //得到每一个属性的描述器 System.out.println("属性名称:"+pd.getName()); System.out.println("属性类型:"+pd.getPropertyType()); System.out.println("set方法"+pd.getWriteMethod()); System.out.println("get方法"+pd.getReadMethod()); } } }
输出结果:
3)BeanUtils的使用
开发中,常用Apache common中的BeanUtils工具来操作JavaBean。
可以通过内省技术进行数据的封装,但是每一次写内省程序是一件很麻烦的事情,并且内省匹配也会有问题(例如一侧是String,一侧是int,还需要进行数据转化),
因此,内省(基于反射,方便操作javabean的API)封装form数据到javabean的代码,一般不自己编写,使用已经编写好的工具开发包BeanUtils开发包。
使用该工具前,需要提前去导入相应的jar包。
下载BeanUtils的jar :commons-beanutils 、commons-logging,需要同时下载这两个jar包,前者依赖后者。
这里就直接说明一些常用方法。
1.BeanUtils.setProperty(Bean对象,属性,属性的值);
2.BeanUtils.getProperty(Bean对象,属性);
3.BeanUtils.copyProperties(Bean对象,Bean对象);
属性拷贝:可以从JavaBean-->JavaBean, Map-->JavaBean(需要导common-collections包)。
标签:apach 规范 简单 name 日常笔记 下载 参数 行数据 method
原文地址:http://www.cnblogs.com/lg-wszz/p/7374939.html