[toc]
Commons BeanUtils的介绍
commons-beanutil开源库是apache组织的一个基础的开源库。为apache中很多类提供工具方法。
Commons-beanutil中包括大量和JavaBean操作有关的工具方法,使用它能够轻松利用Java反射机制来完毕代码中所须要的功能,而不须要具体研究反射的原理和使用,同一时候,该类库中提出了动态Bean的概念,不但提供现有JavaBean的全部功能,并且还能够在执行时动态的对Bean中的属性数据类型进行改动以及增删属性。
这里只记录最基础的使用,简化数据的封装
BeanUtils工具类
封装JavaBean
要求
- 类必须是被public修饰的
- 类必须提供了空参的构造器
- 成员变量必须被private修饰
- 提供公共的getter和setter方法
功能
封装数据
populate(Object obj,Map map)
概念
BeanUtils工具类操作的是属性,而并非成员变量(虽然通常情况下,他们是同名的)
属性:setter和getter方法截取后的产物
比如getName() —> Name —>name 此时name就是属性。
常用方法
- setProperty()
- getProperty()
- populate(Object obj,Map map) 将map集合的键值对信息,封装到对应的JavaBean对象中
setProperty()和getProperty()
package cn.xgblack.weblogin.test;
import cn.xgblack.weblogin.domain.Webuser;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.jupiter.api.Test;
import java.lang.reflect.InvocationTargetException;
/**
* @author 小光
* @date 2019/5/12 9:18
* className: BeanUtilsTest
* description:
* ***************************************************************************
* Copyright(C),2018-2019,https://blog.xgblack.cn .All rights reserved.
* ***************************************************************************
*/
public class BeanUtilsTest {
@Test
public void test(){
Webuser user = new Webuser();
try {
BeanUtils.setProperty(user,"username","zhangsj");
System.out.println(user);
String username = BeanUtils.getProperty(user, "username");
System.out.println(username);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
populate(Object obj,Map map)
/*//2.获取请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
//使用BeanUtils封装
Webuser loginUser = new Webuser();
loginUser.setUsername(username);
loginUser.setPassword(password);*/
//2.获取所有请求参数
Map<String, String[]> map = request.getParameterMap();
Webuser loginUser = new Webuser();
try {
BeanUtils.populate(loginUser,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
退出登录?