javabean初步入门
2014-07-01 01:53
239 查看
Java里经常会用一个专门的类来盛放数据,例如会建一个表单类来存放提交的数据,这些类我们习惯称之为bean。注意bean中的属性不等于类中的字段个数。因为有些属性只需要有get和set方法而不需要字段。
Java有一个java.beans包,里面封装了bean的使用方法。
常用类:Introspector、BeanInfo、PropertyDescriptor
package cn.itcast.introspector;
//该类共有5个属性
public class Person {
private String name;
private String password;
private int age;
public void setAb(int a){
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(int age) {
this.age = age;
}
}
但是apache里重写了一个BeanUtils框架,可以去apache官网下载相应的jar包,貌似这个框架还要依赖commons-logging.jar包,所以在java项目里需要导入这两个包。
用java自带的beans包比apache的框架麻烦,所以现在更多的人倾向于使用commons-beanutils.jar第三方开发包。
package cn.itcast.beanutils;
import java.util.Date;
public class Person {
private String name;
private String password;
private int age;
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(int age) {
this.age = age;
}
}
Java有一个java.beans包,里面封装了bean的使用方法。
常用类:Introspector、BeanInfo、PropertyDescriptor
package cn.itcast.introspector;
//该类共有5个属性
public class Person {
private String name;
private String password;
private int age;
public void setAb(int a){
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(int age) {
this.age = age;
}
}
package cn.itcast.introspector; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.junit.Test; public class Demo1 { //得到bean所有属性 @Test public void test1() throws IntrospectionException{ BeanInfo info=Introspector.getBeanInfo(Person.class); //去掉Object里的属性 BeanInfo info2=Introspector.getBeanInfo(Person.class,Object.class); PropertyDescriptor[] pds=info.getPropertyDescriptors(); for(PropertyDescriptor pd:pds){ System.out.println(pd.getName()); //ab age class name password } } //操纵bean的指定属性:age @Test public void test2() throws Exception{ Person p=new Person(); PropertyDescriptor pd=new PropertyDescriptor("age", Person.class); //得到属性的写方法,为属性赋值 Method method=pd.getWriteMethod(); method.invoke(p, 45); System.out.println(p.getAge());//45 //获取属性的值 method=pd.getReadMethod(); System.out.println(method.invoke(p, null));//45 } //高级内容,获取当前操作的属性的类型 @Test public void test3() throws Exception{ Person p=new Person(); PropertyDescriptor pd=new PropertyDescriptor("age", Person.class); //得到属性的写方法,为属性赋值 Method method=pd.getWriteMethod(); System.out.println(pd.getPropertyType());//int method.invoke(p, 45); System.out.println(p.getAge());//45 //获取属性的值 method=pd.getReadMethod(); System.out.println(method.invoke(p, null));//45 } }
但是apache里重写了一个BeanUtils框架,可以去apache官网下载相应的jar包,貌似这个框架还要依赖commons-logging.jar包,所以在java项目里需要导入这两个包。
用java自带的beans包比apache的框架麻烦,所以现在更多的人倾向于使用commons-beanutils.jar第三方开发包。
package cn.itcast.beanutils;
import java.util.Date;
public class Person {
private String name;
private String password;
private int age;
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(int age) {
this.age = age;
}
}
package cn.itcast.beanutils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConversionException; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.Converter; import org.apache.commons.beanutils.locale.converters.DateLocaleConverter; import org.junit.Test; //使用beanUtils操纵bean的属性 ( 第三方) public class Demo1 { @Test public void test1() throws Exception{ Person p=new Person(); BeanUtils.setProperty(p, "age", 456); System.out.println(p.getAge());//456 } @Test public void test2() throws Exception{ String name="aaaa"; String age="123"; String password="pw"; Person p=new Person(); //支持8种基本类型自动转换 BeanUtils.setProperty(p, "name", name); BeanUtils.setProperty(p, "age", age); BeanUtils.setProperty(p, "password", password); System.out.println(p.getName());//aaaa System.out.println(p.getAge());//123 System.out.println(p.getPassword());//pw } @Test public void test3() throws Exception{ String birthday="1983-12-1"; //为了让日期赋值到bean的birthday属性上,给beanUtils注册一个日期转换器 //ConvertUtils.register(converter, clazz); ConvertUtils.register(new Converter(){ public Object convert(Class type, Object value) { if(value==null) return null; if(!(value instanceof String)){ throw new ConversionException("只支持String类型的转换"); } String str=(String)value; if(str.trim().equals("")) return null; SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd",Locale.US); try { return df.parse(str); } catch (ParseException e) { throw new RuntimeException(e); } } }, Date.class); Person p=new Person(); BeanUtils.setProperty(p, "birthday", birthday); System.out.println(p.getBirthday());//pw System.out.println("___"+BeanUtils.getProperty(p, "birthday")); } @Test public void test5() throws Exception { Map map=new HashMap(); map.put("name", "aaa"); map.put("password", "123"); map.put("age", "23"); map.put("brithday", "1980-09-09"); ConvertUtils.register(new DateLocaleConverter(), Date.class); Person p=new Person(); //用map集合填充bean属性,map关键字和bean属性要一致 BeanUtils.populate(p, map); } }
相关文章推荐
- ElasticSearch初步学习,创建索引(入门一)
- android水波纹涟漪效果的实现<入门+初步提高>
- struts入门学习(struts中ActionForm,Action,javabean的运行机制 )
- FPGA入门初步
- Activiti入门教程一(初步认识Activiti)
- 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍
- React Native基础入门之初步使用Flexbox布局
- JavaBean入门 - 概念和简单例子
- storyboard初步入门 II
- Scala入门到精通——第一节 Scala语言初步
- TDD的iOS开发初步以及Kiwi使用入门
- Hbase初步入门(Mac OS 10.12.5)
- iPhone开发入门(5)—iPhone编程初步
- MVC(JSP+JavaBean+Servlet)入门实例:用户登陆验证
- redis初步入门
- Docker 入门笔记 2 - 初步使用
- Django初步入门
- javabean的初步认识学习
- Gradle构建之初步入门
- 【索引】算法竞赛入门经典-第9章 动态规划初步