ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaWeb 案例8 — 数据的封装和抽取 BeanUtils 工具类

2021-08-19 13:01:10  阅读:205  来源: 互联网

标签:Map 封装 JavaWeb bean BeanUtils JavaBean 属性


  在上一个用户登录案例中,当从浏览器接收参数后,还需要创建 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);

 

      

 

  

标签:Map,封装,JavaWeb,bean,BeanUtils,JavaBean,属性
来源: https://www.cnblogs.com/niujifei/p/15161198.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有