本文最后更新于:4 个月前

《HTTP案例学习:用户登录》的学习中,使用到BeanUtils

案例中只涉及到封装username、password两个对象,但是实际上的用户登录界面,有十几个数据对象需要封装。

按原来的方式,是非常麻烦的。期望能够一次把所有参数获取到,并且通过一个方法,一次把所有数据封装成一个对象。

BeanUtils,一个工具类,简化数据封装

这里专门挑出来,做一份简单的笔记。

配合【教学视频】【BeanUtils工具类常用方法】 食用更佳。


我们将原来写的代码,

//2.获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
//3.封装user对象
User loginUser = new User();
loginUser.setUsername(username);
loginUser.setPassword(password);

使用BeanUtils工具类进行封装,

//2.获取所有请求参数
Map<String, String[]> map = req.getParameterMap();
//3.创建User对象
User loginUser = new User();
//3-2.使用BeanUtils封装
try {
    BeanUtils.populate(loginUser,map);
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

会发现只用简单几行代码就完成了封装,而不用和之前一样分别对每个数据进行封装。

BeanUtils

  • 工具类,简化数据封装
  • 用于封装JavaBean
  • JavaBean:标准(简单)的Java类

概念

  • JavaBean
  • 成员变量
  • 属性:setter和getter方法截取后的产物
    • 例如:getUsername() –> Username–> username(大多数下,名字一样)

JavaBean

  • 标准的Java类
  • 一般放在domain等package下

功能

  • 封装数据

要求

  1. 类必须被public修饰

  2. 必须提供空参的构造器

  3. 成员变量必须使用private修饰

  4. 提供公共setter和getter方法

属性

  • setter和getter方法截取后的产物

  • 例如:getUsername() –> Username–> username(大多数下,名字一样)

调用方法

  1. setProperty()
  • 设置属性值
  1. getProperty()
  • 获取属性值
  1. populate(Object obj, Map map)
  • map集合的键值对信息,封装到对应的JavaBean对象中

Demo

配合 《HTTP案例学习:用户登录》 ,现在New一个BeanUtils.java

package cn.itcast.test;

import cn.itcast.domain.User;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;

import java.lang.reflect.InvocationTargetException;

public class BeanUtilsTest {

    @Test
    public void test(){
        User user = new User();
        try {
            BeanUtils.setProperty(user,"username","zhangsan");
            System.out.println(user);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        
    }
}

控制台输出:

扩展

后来看的一篇博客 【BeanUtils工具类常用方法】,觉得写的很不错,一起记录在这里。


相关资料

【教学视频】:https://www.bilibili.com/video/av70420291?p=143

【BeanUtils工具类常用方法】:https://blog.csdn.net/wzc1991520/article/details/80176679


 目录