javaBean的规范:
- 必须要有一个默认构造器
- 提供get/set方法,如果只有get方法,那么这个属性是只读属性!
- 属性:有get/set方法的成员,还可以没有成员,只有get/set方法。属性名称由get/set方法来决定!而不是成员名称!
- 方法名称满足一定的规范,那么它就是属性!boolean类型的属性,它的读方法可以是is开头,也可以是get开头!
内省:
内省类 --> Bean信息 --> 属性描述符 --> 属性的get/set对应的Method! — > 可以反射了!
commons-beanutils,它是依赖内省完成!
-
导包:
commons-beanutils.jar
commons-logging.jar -
常用方法
BeanUtils.getProperty(Object bean, String propertyName)
BeanUtils.setProperty(Object bean, String propertyName, String propertyValue)
BeanUtils.populate(Map map, Object bean)
3.1 设置JavaBean属性
User user = new User();
BeanUtils.setProperty(user, "username", "admin");
BeanUtils.setProperty(user, "password", "admin123");
System.out.println(user);
3.2 获取JavaBean属性
User user = new User(“admin”, “admin123”);
String username = BeanUtils.getProperty(user, "username");
String password = BeanUtils.getProperty(user, "password");
System.out.println("username=" + username + ", password=" + password);
3.3 封装Map数据到JavaBean对象中
Map<String,String> map = new HashMap<String,String>();
map.put("username", "admin");
map.put("password", "admin123");
User user = new User();
BeanUtils.populate(user, map);
System.out.println(user);
CommontUtils.toBean(Map map, Class class)自己写的工具类
package cn.itcast.utils;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.beanutils.BeanUtils;
public class CommonUtils {
/**
* 生成不重复的32位长的大写字符串
* @return
*/
public static String uuid() {
return UUID.randomUUID().toString().replace("-", "").toUpperCase();
}
/**
* 把map转换成指定类型的javaBean对象
* @param map
* @param clazz
* @return
*/
public static <T> T toBean(Map map, Class<T> clazz) {
try {
/*
* 1. 创建指定类型的javabean对象
*/
T bean = clazz.newInstance();
/*
* 2. 把数据封装到javabean中
*/
BeanUtils.populate(bean, map);
/*
* 返回javabean对象
*/
return bean;
} catch(Exception e) {
throw new RuntimeException(e);
}
}
}
调用
```php
package cn.itcast.domain;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;
import cn.itcast.utils.CommonUtils;
public class Demo1 {
@Test
public void fun1() throws Exception {
String className = "cn.itcast.domain.Person";
Class clazz = Class.forName(className);
Object bean = clazz.newInstance();
BeanUtils.setProperty(bean, "name", "张三");
BeanUtils.setProperty(bean, "age", "23");
BeanUtils.setProperty(bean, "gender", "男");
BeanUtils.setProperty(bean, "xxx", "XXX");
String age = BeanUtils.getProperty(bean, "age");
System.out.println(age);
System.out.println(bean);
}
/*
* 把map中的属性直接封装到一个bean中
*
* Map: {"username":"zhangSan", "password","123"}
* 我们要把map的数据封装到一个javabean中!要求map的key与bean的属性名相同!
*/
@Test
public void fun2() throws Exception {
Map<String,String> map = new HashMap<String,String>();
map.put("username", "zhangSan");
map.put("password", "123");
User user = new User();
BeanUtils.populate(user, map);
System.out.println(user);
}
@Test
public void fun3() {
Map<String,String> map = new HashMap<String,String>();
map.put("username", "zhangSan");
map.put("password", "123");
/*
* request.getParameterMap();
*/
//.class 用于类 而 getClass()用于对象。
User user = CommonUtils.toBean(map, User.class);
System.out.println(user);
}
}