首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

Apache Commons:BeanUtils引见

2013-11-15 
Apache Commons:BeanUtils介绍public class Person {private String name “”private String email “”

Apache Commons:BeanUtils介绍
public class Person { private String name = “”; private String email = “”; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}

?再创建一个Test类,其中在main方法中代码如下:

?

import java.lang.reflect.InvocationTargetException;import java.util.HashMap;import java.util.Map;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.ConvertUtils;public class Test {  public static void main(String[] args) {    Person person = new Person();    person.setName(“tom”);    person.setAge(21);    try {        //克隆,仅此一行而已!      Person person2 =  (Person)BeanUtils.cloneBean(person);        System.out.println(person2.getName()+”>>”+person2.getAge());    } catch (IllegalAccessException e) {        e.printStackTrace();    } catch (InstantiationException e) {        e.printStackTrace();    } catch (InvocationTargetException e) {        e.printStackTrace();    } catch (NoSuchMethodException e) {        e.printStackTrace();    }  }}

?

通过追查其源码,我们可以发现其原理也是通过Java的反射机制来做的,这不足为奇,因为我们所做的一切都是以Java Api为基础的,就看你能否将其封装得非常好,就如同BeanUtils所做的这样。

?

2、Map map = new HashMap();map.put(“name”,”tom”);map.put(“email”,”tom@”);map.put(“age”,”21”);//将map转化为一个Person对象Person person = new Person();BeanUtils.populate(person,map);

?

通过上面的一行代码,此时person的属性就已经具有了上面所赋的值了。

那么什么情况下会应用到这种场景呢?如果你做过Web开发,你一定对这样的一个场景很熟悉,那就是我们总是要通过如下的代码来做一些事情:

String name = request.getParameter(“name”);String age = request.getParameter(“age”);person.setName(name);person.setAge(age);

?

如果经常写的话,觉得很烦吧?这时你就可以应用上面BeanUtils的功能,你可以先得到各参数的名称及对应的值并放入到一个Map对象中,如下:

?

Enumeration params = request.getParameterNames();while (params.hasMoreElements()){String name = (String) params.nextElement();map.put(name, request.getParameter(name));}

?

然后再通过BeanUtils.populate(person,map);将map转化为一个对象,这样看上去后是不是觉得相当简洁?而且特别是当参数很多的时候,比如提交了一个庞大的form表单时,这样就更显其强大与简洁!

既然可以将一个map对象转化为一个Bean,当然也可以将一个Bean转化为一个Map对象了,如下:

Map map = BeanUtils.describe(person);

上面提到的只是BeanUtils众多强大功能中的两个,更多的功能其实需要自己去研究发掘。

?

转载自:子猴博客