BeanUtils是Apache commens组件里面的成员,由Apache提供的一套开源api,用于简化对javaBean的操作,能够对基本类型自动转换。
JavaBean
BeanUtils组件是用于简化javaBean的操作,那么什么是javaBean呢?简单来说,javaBean实质就是java类,只不过是遵循了某种规范的java类。
javaBean的特点:
必须具有一个无参的构造方法
属性必须私有化
私有化的属性必须通过public类型的方法来暴露,也就是说要出现setXXX()、getXXX()或者isXXX()的方法
下载BeanUtils
http://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi,下载好组件,再到项目里面引入jar文件。
导入核心包
commons-beanutils-1.9.3.jar
commons-logging-1.2.jar
注意:当缺少日志jar包,会出现如下的报错情况。java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
logging组件的下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi
javaBean实例
BeanUtils用法
1.对象的拷贝,BeanUtils.copyProperties(Object dest,Object orig)
2.对象属性的拷贝,BeanUtils.copyProperties(Object bean,String name,Object value)或者BeanUtils.setProperty(Object bean,String name,Object value)
3.map数据封装到Javabean,populate(Object bean, Map<String,? extends Object> properties)
实例
1.对象的拷贝
2.对象属性的拷贝
3.map数据封装到javaBean
注意:要map中的数据封装到JavaBean中去,需要map中的key与JavaBean里面的私有化的属性要相匹配
类型转换器
当javaBean中出现非基本类型数据的私有化属性,并且需要对该数据进行封装时,就要去注册该数据类型的类型转换器了,不如就会出现错误,比如该Student对象中的日期类型。
日期类型转换出错:org.apache.commons.beanutils.converters.DateConverter toDate 警告: DateConverter does not support default String to 'Date' conversion,可以看出工具类converters在转换的时候出现了错误,为此我们可以去查看该类,以便我们接下来去实现类型转换。
converter
在解压出来的BeanUtils文件下的apidoc目录中的index.html里面可以找到该类的说明,会发现它是一个接口,有很多的实现类,我们可以使用里面的实现类来做日期类型的转换或者说我们可以自己去注册个类型转换器。
自定义类型转换器
去复写ConvertUtils里面的register(Converter converter, Class<?> clazz)方法
使用工具类提供的类型转换器
注意:当日期字符串是空字符串或者存在空格的时候,会报错!
BeanUtils在servlet的使用
获取表单提交的数据并封装到javabean中去,request.getParameterMap()获取所有的参数并存储到Map中去,并利用BeanUtils里面的populate(Object bean, Map<String,? extends Object> properties),封装到对象中去,简化了很多的操作!
1.jsp
jsp显示的结果:
2.servlet
输出结果:Student [name=老王, age=0, password=11111, phone=13232174361]