国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Jakarta Commons BeanUtils(轉)

2019-11-18 14:17:38
字體:
來源:轉載
供稿:網(wǎng)友

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

Employee employee = ...;
int index = ...;
Employee subordinate = (Employee)
PropertyUtils.getIndexedProperty(employee, "subordinate", index);//根據(jù)索引
值取的屬性值
*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)
實現(xiàn)代碼:
Employee employee = ...;
Address address = ...;
PropertyUtils.setMappedProperty(employee, "address(home)", address);//根據(jù)數(shù)組
//內的值來去的相應的屬性值
Employee employee = ...;
Address address = ...;
PropertyUtils.setMappedProperty(employee, "address", "home", address);
*Nested屬性訪問方法//Nested的意思是參數(shù)中包含組件
PropertyUtils.getNestedProperty(Object bean, String name)
PropertyUtils.setNestedProperty(Object bean, String name, Object value)
實現(xiàn)代碼:
String city = (String) PropertyUtils.getNestedProperty(employee,
"address(home).city");
2.BeanUtils.DynaBean and BeanUtils.DynaClass 接口介紹
DynaBean必須有一個bean來實現(xiàn)這個接口,DynaClass必有一個bean的屬性集來實現(xiàn)
*BasicDynaBean and BasicDynaClass - 基本的 Dynamic 類型
基本的API:
BasicDynaClass(java.lang.String name, java.lang.Class dynaBeanClass, DynaProperty[] properties)
BasicDynaBean(DynaClass dynaClass)
我們線定義一下基本的代碼:
//定義動態(tài)屬性集
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)
};
//創(chuàng)建動態(tài)類來設定動態(tài)屬性值
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()) {
//利用動態(tài)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傳遞過來的函數(shù)
主要函數(shù):
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)
實現(xiàn)例子:
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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 天柱县| 曲周县| 会同县| 南漳县| 揭西县| 嘉峪关市| 太保市| 阿鲁科尔沁旗| 纳雍县| 安仁县| 池州市| 和政县| 宝兴县| 丹棱县| 那曲县| 河池市| 东丰县| 宿州市| 永城市| 翁源县| 大邑县| 兰溪市| 老河口市| 丰原市| 莱芜市| 营口市| 固始县| 宁蒗| 高要市| 喜德县| 上林县| 高淳县| 南投市| 萨嘎县| 饶阳县| 鄂温| 建德市| 湖北省| 团风县| 漳平市| 温泉县|