亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Jakarta Commons BeanUtils(轉)

2019-11-18 14:17:38
字體:
來源:轉載
供稿:網友

  1.簡介
在一般的寫bean組件的時候,都必須要寫setter和getter方法,當然假如我們事先已經知道bean的相關屬性和
方法,寫bean是比較簡單的,但是組件太多的時候,重復編寫經常是枯燥乏味令人厭煩的。但當有些時候我么需
要調用動態對象的屬性的時候,我們應該怎么來設定和獲取對象的屬性呢?BeanUtils就可以幫助我們來解決這
個問題。它需要Collections包和logging包的支持。最新版本1.7,文檔還是1.6.1的.
2.已經使用BeanUtils的事例
*構建和java對象模型交互的腳本語言,比如Bean Scripting Framework
*構建web層顯示和相似用途的模板語言處理器,如jsp或者Velocity
*構建適用于jsp和xsp環境的自定義標簽庫,如Jakarta Taglibs,Struts,Cocoon
*處理基于xml的配置資源文件,如Ant創建腳本,應用程序部署文件和Tomcat的xml配置文件
3.API簡介
BeanUtils 的 Java API 主要的 package 總共四個
org.apache.commons.beanutils
這個是BeanUtils最基本的包,提供了處理getter和setter方法屬性的類
org.apache.commons.beanutils.converters
Converter接口的標準實現,在啟動的時候和ConvertUtils一同注冊
org.apache.commons.beanutils.locale
組件的本地化處理包
org.apache.commons.beanutils.locale.converters
LocaleConverter接口的標準實現,啟動的時候和LocaleConvertUtils 一同注冊
4.org.apache.commons.beanutils介紹
這四個包本專題只介紹這一個,其他的使用的時候請自己參考它的文檔,文檔內容寫得很好.
1.PRopertyUtils
它支持三種類型的屬性值-Simple,Indexed,Mapped
我們先創建一個簡單的bean
public class Employee {
public Address getAddress(String type);
public void setAddress(String type, Address address);
public Employee getSubordinate(int index);
public void setSubordinate(int index, Employee subordinate);
public String getFirstName();
public void setFirstName(String firstName);
public String getLastName();
public void setLastName(String lastName);
}
*Simple屬性訪問方法
PropertyUtils.getSimpleProperty(Object bean, String name)
PropertyUtils.setSimpleProperty(Object bean, String name, Object value)
實現代碼:
Employee employee = ...;
String firstName = (String)
PropertyUtils.getSimpleProperty(employee, "firstName");
String lastName = (String)
PropertyUtils.getSimpleProperty(employee, "lastName");
... manipulate the values ...
PropertyUtils.setSimpleProperty(employee, "firstName", firstName);
PropertyUtils.setSimpleProperty(employee, "lastName", lastName);
*Indexed屬性訪問方法
PropertyUtils.getIndexedProperty(Object bean, String name)
PropertyUtils.getIndexedProperty(Object bean, String name, int index)
PropertyUtils.setIndexedProperty(Object bean, String name, Object value)
PropertyUtils.setIndexedProperty(Object bean, String name, int index, Object value)
實現代碼:
Employee employee = ...;
int index = ...;
String name = "subordinate[" + index + "]";
Employee subordinate = (Employee)
PropertyUtils.getIndexedProperty(employee, name);//根據value取得屬性

Employee employee = ...;
int index = ...;
Employee subordinate = (Employee)
PropertyUtils.getIndexedProperty(employee, "subordinate", index);//根據索引
值取的屬性值
*Mapped屬性訪問方法
PropertyUtils.getMappedProperty(Object bean, String name)
PropertyUtils.getMappedProperty(Object bean, String name, String key)
PropertyUtils.setMappedProperty(Object bean, String name, Object value)
PropertyUtils.setMappedProperty(Object bean, String name, String key, Object value)
實現代碼:
Employee employee = ...;
Address address = ...;
PropertyUtils.setMappedProperty(employee, "address(home)", address);//根據數組
//內的值來去的相應的屬性值
Employee employee = ...;
Address address = ...;
PropertyUtils.setMappedProperty(employee, "address", "home", address);
*Nested屬性訪問方法//Nested的意思是參數中包含組件
PropertyUtils.getNestedProperty(Object bean, String name)
PropertyUtils.setNestedProperty(Object bean, String name, Object value)
實現代碼:
String city = (String) PropertyUtils.getNestedProperty(employee,
"address(home).city");
2.BeanUtils.DynaBean and BeanUtils.DynaClass 接口介紹
DynaBean必須有一個bean來實現這個接口,DynaClass必有一個bean的屬性集來實現
*BasicDynaBean and BasicDynaClass - 基本的 Dynamic 類型
基本的API:
BasicDynaClass(java.lang.String name, java.lang.Class dynaBeanClass, DynaProperty[] properties)
BasicDynaBean(DynaClass dynaClass)
我們線定義一下基本的代碼:
//定義動態屬性集
DynaProperty[] props = new DynaProperty[]{
new DynaProperty("address", java.util.Map.class),
new DynaProperty("subordinate", mypackage.Employee[].class),
new DynaProperty("firstName", String.class),
new DynaProperty("lastName", String.class)
};
//創建動態類來設定動態屬性值
BasicDynaClass dynaClass = new BasicDynaClass("employee", null, props);
DynaBean employee = dynaClass.newInstance();
employee.set("address", new HashMap());
employee.set("subordinate", new mypackage.Employee[0]);
employee.set("firstName", "Fred");
employee.set("lastName", "Flintstone");
*ResultSetDynaClass (Wraps ResultSet in DynaBeans) - 使用 ResultSet 的
Dynamic JavaBean
API:
ResultSetDynaClass(java.sql.ResultSet resultSet)
ResultSetDynaClass(java.sql.ResultSet resultSet, boolean lowerCase)
Connection conn = ...;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery
("select account_id, name from customers");
Iterator rows = (new ResultSetDynaClass(rs)).iterator();
while (rows.hasNext()) {
//利用動態bean進行輸出
DynaBean row = (DynaBean) rows.next();
System.out.println("Account number is " +
row.get("account_id") +
" and name is " + row.get("name"));
}
rs.close();
stmt.close();
*RowSetDynaClass (Disconnected ResultSet as DynaBeans) - 使用 RowSet 的 Dynamic
JavaBean
API:
RowSetDynaClass(java.sql.ResultSet resultSet)
RowSetDynaClass(java.sql.ResultSet resultSet, boolean lowerCase)

Connection conn = ...; // 從緩沖池取得連接
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ...");
RowSetDynaClass rsdc = new RowSetDynaClass(rs);
rs.close();
stmt.close();
...; //關閉連接返回緩沖池
List rows = rsdc.getRows();
...; // 處理得到的行
2.BeanUtils.ConvertUtils 介紹
這個包主要用來轉換從request傳遞過來的函數
主要函數:
ConvertUtils().convert(java.lang.Object value)
ConvertUtils().convert(java.lang.String[] values, java.lang.Class clazz)
ConvertUtils().convert(java.lang.String value, java.lang.Class clazz)
實現例子:
HttpServletRequest request = ...;
MyBean bean = ...;
HashMap map = new HashMap();
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
map.put(name, request.getParameterValues(name));
}
BeanUtils.populate(bean, map);//用ConvertUtils進行轉換
目前支持的轉換類型:
sjava.lang.BigDecimal
java.lang.BigInteger
boolean and java.lang.Boolean
byte and java.lang.Byte
char and java.lang.Character
java.lang.Class
double and java.lang.Double
float and java.lang.Float
int and java.lang.Integer
long and java.lang.Long
short and java.lang.Short
java.lang.String
java.sql.Date
java.sql.Time
java.sql.Timestamp
5.參考資料或文章:
*http://jakarta.apache.org/commons/beanutils/api/index.Html
*http://jakarta.apache.org/commons/beanutils/index.html
*http://apache.linuxforum.net/dist/jakarta/commons/beanutils/binaries/commons-beanutils-1.6.1.zip

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品无人国产偷自产在线| 久久色在线播放| 国产精品免费一区二区三区都可以| 亚洲在线免费看| 国产99久久久欧美黑人| 日韩最新免费不卡| 欧美午夜视频在线观看| 亚洲japanese制服美女| 日产日韩在线亚洲欧美| 亚洲国产日韩欧美综合久久| 欧美激情在线观看视频| 九九精品视频在线| 欧美日韩成人精品| 日韩在线观看网站| 美女福利视频一区| 国产欧美日韩丝袜精品一区| 51色欧美片视频在线观看| 日本高清+成人网在线观看| 韩国v欧美v日本v亚洲| 亚洲高清一二三区| 国产精品成人播放| 国产美女高潮久久白浆| 国产成人av在线播放| 一区二区欧美激情| 伊人av综合网| 97精品一区二区视频在线观看| 日韩风俗一区 二区| 久久久999国产精品| 亚洲国产成人精品一区二区| 亚洲欧美国产视频| 在线亚洲午夜片av大片| 亚洲深夜福利在线| 亚洲丝袜av一区| 久久视频在线直播| 亚洲性生活视频在线观看| 中文字幕日韩高清| 国产日韩在线免费| 中国china体内裑精亚洲片| 久久精品夜夜夜夜夜久久| 国产精品极品美女在线观看免费| 日韩中文字幕免费视频| 色综合伊人色综合网| 国产视频福利一区| 国产成人在线亚洲欧美| 日韩久久午夜影院| 日本国产欧美一区二区三区| 538国产精品视频一区二区| 亚洲视频网站在线观看| 第一福利永久视频精品| 欧美亚洲在线播放| 亚洲精品国产精品久久清纯直播| 亚洲欧美日韩国产中文| 亚洲老头同性xxxxx| 亚洲黄色av女优在线观看| 欧美精品videos性欧美| 欧美裸体xxxxx| 亚洲人成电影网站色| 97香蕉超级碰碰久久免费的优势| 亚洲国产精品va| 成人福利在线观看| 亚洲一级免费视频| 国产成人涩涩涩视频在线观看| 精品国产一区久久久| 日韩欧美极品在线观看| 国产国产精品人在线视| 国产精品99免视看9| 欧美日韩亚洲成人| 欧美性猛交99久久久久99按摩| 午夜免费久久久久| 中国日韩欧美久久久久久久久| 热久久免费国产视频| 亚洲欧美在线第一页| 亚洲国产精品福利| 国产一区二区在线免费| 亚洲一区亚洲二区| 日韩欧美视频一区二区三区| 欧美视频在线看| 91九色蝌蚪国产| 成人黄色在线免费| 中文字幕日韩欧美在线视频| 久久在线免费视频| 久久精品中文字幕免费mv| 欧美xxxx综合视频| 91精品视频观看| 日本亚洲精品在线观看| 中文字幕一区日韩电影| 最近2019年中文视频免费在线观看| 国模精品一区二区三区色天香| 国产精品av电影| 疯狂蹂躏欧美一区二区精品| 91精品国产九九九久久久亚洲| 亚洲嫩模很污视频| 久久久精品久久| 欧美性猛交xxxx偷拍洗澡| 一区二区三区 在线观看视| 8090成年在线看片午夜| 日韩电影中文字幕一区| 亚洲男人天堂2023| 亚洲国产欧美自拍| 亚洲变态欧美另类捆绑| 一区二区在线视频播放| 黑人巨大精品欧美一区二区一视频| 欧美性生活大片免费观看网址| 操日韩av在线电影| 不卡av在线播放| 日韩欧美在线视频日韩欧美在线视频| 国产精品一区=区| 欧美人在线视频| 国产精品亚洲视频在线观看| 欧美国产精品va在线观看| 日韩精品视频在线观看网址| 亚洲黄页网在线观看| 欧美激情一区二区三区高清视频| 亚洲成人网av| 欧美洲成人男女午夜视频| 久久噜噜噜精品国产亚洲综合| 国产日本欧美一区| 久久免费视频网站| 欧美一级片免费在线| 亚洲国产精久久久久久久| 欧美亚洲伦理www| 日韩美女av在线| 久久中文精品视频| 国产一区二区日韩精品欧美精品| 午夜精品理论片| 精品国产乱码久久久久酒店| 国产日韩欧美在线| 欧美精品制服第一页| 日日噜噜噜夜夜爽亚洲精品| 久久亚洲一区二区三区四区五区高| 久久人人爽人人爽人人片av高清| 亚洲欧美国产精品va在线观看| 欧美老女人在线视频| 欧美极品少妇xxxxⅹ喷水| 欧美另类69精品久久久久9999| 国产成人欧美在线观看| 中文字幕久久精品| 亚洲国产99精品国自产| 国语自产偷拍精品视频偷| 在线成人一区二区| 午夜精品一区二区三区在线播放| 国产精品aaaa| 欧美精品久久久久久久久| 黄色成人在线免费| 欧美性xxxxx极品| 久久精品视频网站| 欧美壮男野外gaytube| 国产精品久久久久av| 成人妇女淫片aaaa视频| www.欧美视频| 富二代精品短视频| 国产精品高清在线观看| 亚洲综合中文字幕在线| 日本韩国在线不卡| 国产在线视频一区| 欧美极品少妇全裸体| 欧美激情一区二区三级高清视频| 欧美大学生性色视频| 国产精品久久久久久五月尺| 国产欧美日韩91| 国产亚洲综合久久| 欧美成人四级hd版| 2019中文字幕在线| 久久91超碰青草是什么|