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);

 

      

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM