JavaBean

一、概述

JavaBean一种特殊的Java对象。特点如下:

  • 所有的成员私有
  • 对外提供公共的setter 和 getter方法(boolean可以get也可以是is)
  • 提供空参的构造
  • JavaBean属性名要求:前两个字母要么都大写,要么都小写

符合以上规范的类成员,称为javabean的属性。可以用特定的方法,对javabean的属性进行统一的自动赋值操作。

二、内省

1.概念

内省的目标是得到JavaBean属性的读、写方法的反射对象,通过反射对JavaBean属性进行操作的一组API。(哪个2货起的内省这个名字,我保证不打死你),特点如下:

  • 对反射的一层封装。可以获取一个对象的读和写的方法和属性。
  • BeanInfo:就是对一个JavaBean类的描述(属性,方法,事件)
  • Introspector:获取BeanInfo对象

内省的条件是:

  • map中的key必须与javabean的类中的成员变量名字相同

2.内省的方式

2.1 sun公司原始的方法

每个PropertyDescriptor对象对应一个JavaBean属性:

  • String getName():获取JavaBean属性名称;
  • Method getReadMethod:获取属性的读方法;
  • Method getWriteMethod:获取属性的写方法。
//1.建立一个map集合,模板表单提交方式
HashMap<String,String> hm = new HashMap<String,String>();
hm.put("username", "zhangsan");
hm.put("password","22");
//2.通过sun公司的内省方式,获取参数
BeanInfo beaninfo = Introspector.getBeanInfo(User.class);
PropertyDescriptor[] pds = beaninfo.getPropertyDescriptors();
//3.创建对象,用于装数据
User user = new User();
for (PropertyDescriptor pd : pds) {
    //遍历集合,如果集合中有与类成员名称相同的,刚取出,用反射赋值
    String name=pd.getName();
    String value=hm.get(name);
    if(value!=null){//如果map和类成员中的对象相符,则开始写入
        Method writeMethod = pd.getWriteMethod();//底层用反射的方法
        writeMethod.invoke(user, value);//反射调用方法
    }

}

2.2 appach公司的commons-beanutils

它底层使用了内省,对内省进行了大量的简化!要导入如下两个包:

  • commons-beanutils.jar
  • commons-logging.jar
//指定编码
request.setCharacterEncoding("utf-8");
//1.得到form表单提交的参数,用map接收
Map pm = request.getParameterMap();
User user = new User();
//2.用内省的方式,调用org.apache.commons.beanutils.BeanUtils,把map中的数据写到user中
BeanUtils.populate(user, pm);
System.out.println(user);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值