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开发,你一定对这样的一个场景很熟悉,那就是我们总是要通过如下的代码来做一些事情: ? 如果经常写的话,觉得很烦吧?这时你就可以应用上面BeanUtils的功能,你可以先得到各参数的名称及对应的值并放入到一个Map对象中,如下: ? ? 然后再通过BeanUtils.populate(person,map);将map转化为一个对象,这样看上去后是不是觉得相当简洁?而且特别是当参数很多的时候,比如提交了一个庞大的form表单时,这样就更显其强大与简洁! 既然可以将一个map对象转化为一个Bean,当然也可以将一个Bean转化为一个Map对象了,如下: Map map = BeanUtils.describe(person); 上面提到的只是BeanUtils众多强大功能中的两个,更多的功能其实需要自己去研究发掘。 ? 转载自:子猴博客String name = request.getParameter(“name”);String age = request.getParameter(“age”);person.setName(name);person.setAge(age);
Enumeration params = request.getParameterNames();while (params.hasMoreElements()){String name = (String) params.nextElement();map.put(name, request.getParameter(name));}