• JavaWeb 之 数据的封装和抽取 BeanUtils 工具类


      在上一个用户登录案例中,当从浏览器接收参数后,还需要创建 JavaBean 类,对其的属性每一项赋值,如果属性少,可以手动完成,但是当属性非常多,这时就发现非常不方便,在这里就可以使用封装 JavaBean 的工具类。

        示例:

        

       这里的每一项都需要手动赋值,比较麻烦。

      BeanUtils 工具类,它可以一次性的把所有请求的参数注入到 JavaBean中,简化数据封装,用于封装 JavaBean。

      BeanUtils 工具类,经常用于把 Map 中的值注入到 JavaBean 中,或者是对象属性值的拷贝操作。

      BeanUtils 是 Apache 提供的一个jar 包,使用时需要导入两个 jar 包。

    commons-beanutils-1.8.0jar

    commons-logging-1.1-.1.jar

      注意:对于封装的数据必须是标准的 JavaBean 类

      JavaBean :标准的Java类

        要求

          ① 类必须被 public 修饰 

          ② 必须提供空参的构造器

          ③ 成员变量必须使用 private 修饰

          ④ 提供公共的 setter 和 getter 方法。

        功能:封装数据。

        在使用 BeanUtils 这个工具类,先来了解JavaBean中的成员变量和属性。

        JavaBean的成员变量:就是JavaBean中用private 修饰的变量。

        JavaBean的属性:setter 和 getter 方法截取后的产物。

          如: getUsername() --> Username --> username(属性)

        工具类中方法

     setProperty()  // 根据属性来获取 JavaBean 的属性值
     getProperty()  // 根据属性来设置 JavaBean 的属性值
     populate(Object JavaBean, Map map):将map集合的键值对信息,封装到对应的JavaBean对象中
    

        本质:这个工具类其实是调用 javaBean 中的对应的 setxxx() 方法来给成员进行赋值的。(切记)

        还可以对这个工具类进一步封装成我们自己的工具类,使用时更加便捷。

        BeanUtils 工具类(自己封装)

     1 import org.apache.commons.beanutils.BeanUtils;
     2 
     3 import java.util.Map;
     4 
     5 public class BeanUtils {
     6 
     7     /**
     8      * 把 Map 中的值注入到对应的 JavaBean 属性中
     9      * @param value  包含各种参数的 map集合
    10      * @param bean   封装数据的 JavaBean对象
    11      * @param <T>    泛型
    12      * @return
    13      */
    14     public static <T> T copyParamToBean(Map value, T bean) {
    15 
    16         try {
    17             System.out.println("注入之前:" + bean);
    18             /**
    19              * 把所有请求的参数都注入到 bean 对象中
    20              */
    21             BeanUtils.populate(bean, value);
    22 
    23             System.out.println("注入之后:" + bean);
    24         } catch (Exception e) {
    25             e.printStackTrace();
    26         }
    27 
    28         return bean;
    29     }
    30 }

       这样在 Servlet中封装 JavaBean 会变的更加简洁:

       示例:

     1      //获取所有的请求参数信息
     2         Map<String, String[]> parameterMap = request.getParameterMap();
     3 
     4         //遍历所有的参数信息
     5         for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
     6             System.out.println(entry.getKey() + "=" + Arrays.asList(entry.getValue()));
     7         }
     8 
     9         //根据 Map 参数 封装成对应的 JavaBean 对象
    10         User user = WebBeanUtils.copyParamToBean(parameterMap, new User());
    11         System.out.println("user = " + user);

          

      

  • 相关阅读:
    [0] 需求管理工具CaliberRM
    [0] 自动化测试工具QTP
    [0] UML建模工具(StarUML)
    [0] C# 扩展方法(Extension Method)
    [0] 统一软件过程(RUP)
    [0] XP敏捷开发
    关于ES6的let,const与var之间的三生三世
    lumen手记:自定义Validate表单验证
    window下python安装pip,切换为国内阿里云镜像
    Lumen开发:简单实现auth用户认证
  • 原文地址:https://www.cnblogs.com/niujifei/p/11620650.html
Copyright © 2020-2023  润新知