在软件开发时,一些数据和功能需在很多地方使用,为了方便将它们进行“移植”,Sun公司提出了一种JavaBean技术,使用JavaBean可以对这些数据进行封装,做到一次编写,到处运行。
JavaBean是Java开发语言中一个可以重复使用的软件组织,它本质上就是一个JAVA类。
为了规范JavaBean的开发,两个要求:
(1)它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法。
(2)它提供公共的setter方法和getter方法,让外部程序设置和获取JavaBean的属性。
其实和java中的封装是类似的
直接上代码
package cn.itcast.chapter07.javabean;
public class Student {
private String sid;
private String name;
private int age;
private boolean married;
// age属性的getter和setter方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// married属性的getter和setter方法
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
// sid属性的getter方法
public String getSid() {
return sid;
}
// name属性的setter方法
public void setName(String name) {
this.name = name;
}
public void getInfo() {
System.out.print("我是一个学生");
}
}
为了动态访问java对象的属性,我们需要使用BeanUtils工具,
commons-beanutils-1.9.2.jar
commons-logging-1.2.jar
这两个jar包,想上传的,但是显示已经有人上传过了,所以无法上传。你们需要可以百度下载
BeanUtils类的常用方法
static void populate(Object bean,Map<String,?extends Object> properties)根据指定的名称/值对为相应的JavaBean属性设置值
static void setProperty(Object bean,String name,Object value)设置指定的属性值,传入的类型要求能转换成相应属性的类型。
static String getProperty(Object bean,String name)返回指定bean指定属性的值,返回值类型为String类型
直接上代码,感受下它的作用
创建一个Person类
package cn.itcast.chapter07.beanutils;
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
再创建一个BeanUtilsDemo类,该类使用了BeanUtils类的常用方法,代码如下
package cn.itcast.chapter07.beanutils;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtilsDemo {
public static void main(String[] args) throws Exception {
Person p = new Person();
// 使用BeanUtils为属性赋值
BeanUtils.setProperty(p, "name", "Jack");
BeanUtils.setProperty(p, "age", 10);
// 使用BeanUtils获取属性值
String name = BeanUtils.getProperty(p, "name");
String age = BeanUtils.getProperty(p, "age");
System.out.println("我的名字是" + name + ",我今年" + age + "岁了!");
// 创建map集合,用于存放属性及其属性值
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "张三");
map.put("age", 10);
// 使用populate()方法为对象的属性赋值
BeanUtils.populate(p, map);
// 打印赋值后对象的信息
System.out.println("姓名:" + p.getName() + ", 年龄:" + p.getAge());
}
}
结果如下