JavaWeb -- 内省—beanutils工具包 的使用
package com.kevin; import static org.junit.Assert.*; import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test; public class BeanDemo1 { @Test
public void test1() throws IllegalAccessException, InvocationTargetException
{
Person p1 = new Person("kevin");
System.out.println(p1.getName());
BeanUtils.setProperty(p1, "name", "xiang");
System.out.println(p1.getName());
} @Test
public void test2() throws IllegalAccessException, InvocationTargetException
{
String name = "xiangjie";
String age = "23";
String birthday = "1980-09-09"; //自己注册日期转换器:String---> Date,实际开发可以用包里实现好的。
ConvertUtils.register(new Converter() {
@Override
public Object convert(Class type, Object value) {
if(value == null)
{
return null;
}
if( !(value instanceof String) )
{
throw new ConversionException("只支持String类型的转换");
} String str = (String) value;
if( str.trim().equals("") )
{
return null;
} SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
return df.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}, Date.class); Person p2 = new Person();
BeanUtils.setProperty(p2, "name", name);
BeanUtils.setProperty(p2, "age", age);
BeanUtils.setProperty(p2, "birthday", birthday); System.out.println(p2.getName());
System.out.println(p2.getAge());
System.out.println(p2.getBirthday());
} @Test
public void test3() throws IllegalAccessException, InvocationTargetException
{
String name = "xiangjie";
String age = "23";
String birthday = "1980-09-09"; //用官方实现的包, 但是有问题
ConvertUtils.register(new DateLocaleConverter(), Date.class); Person p2 = new Person();
BeanUtils.setProperty(p2, "name", name);
BeanUtils.setProperty(p2, "age", age);
BeanUtils.setProperty(p2, "birthday", birthday); System.out.println(p2.getName());
System.out.println(p2.getAge());
System.out.println(p2.getBirthday().toString()); } @Test
public void test4() throws IllegalAccessException, InvocationTargetException
{
Map map = new HashMap();
map.put("name", "aaa");
map.put("age", "12"); //填充,如果包含有Date这种类型的数据,一样要注册转换器
Person bean = new Person();
BeanUtils.populate(bean, map); System.out.println(bean.getName());
System.out.println(bean.getAge());
}
}
JavaWeb -- 内省—beanutils工具包 的使用的更多相关文章
- 内省—beanutils工具包
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. BeanU ...
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...
- java 内省综合案例和Beanutils工具包
演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...
- 32_使用BeanUtils工具包操作JavaBean
由于对属性设置值和得到值的需求很多,使用频率很高,所以有一些开源勇士 不满足于JavaBean API 中IntroSpector来操作bean, 写出来了通用的BeanUtils工具,来进一步简 ...
- Commons BeanUtils工具包
简介: BeanUtils工具包是由Apache公司所开发,提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理. 我们知道,一个JavaBean通常包含了大 ...
- javaweb学习总结五(内省、beanUtils工具包)
一:内省的概念 1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射 javabean,sun公司开发出一套API提高效率. 2:javaBean,就是用来封装客户端请求 ...
- JavaWeb 之 BeanUtils 工具类
在上一个用户登录案例中,当从浏览器接收参数后,还需要创建 JavaBean 类,对其的属性每一项赋值,如果属性少,可以手动完成,但是当属性非常多,这时就发现非常不方便,在这里提供一个可以封装 Java ...
- JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用
Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...
- javase(14)_java基础增强
一.Eclipse的使用 1.在eclipse下Java程序的编写和run as,debug as,及java运行环境的配置. 2.快捷键的配置,常用快捷键: •内容提示:Alt + / •快速修复: ...
随机推荐
- K - Children of the Candy Corn(待续)
K - Children of the Candy Corn Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d ...
- (三)Solrj4到Solrj5的升级之路
(三)Solrj4到Solrj5的升级之路 Solr5发布了,带来了许多激动人心的新特性,但Solrj的许多接口也发生了变化,升级是痛苦的,但也是必须的,下面就赶紧来看看有哪些代码需要升级吧. 变化1 ...
- dfs-求连通块
状态:若为W则继续搜索 import java.util.Scanner; public class Main { static int n,m; static char[][] field; sta ...
- jQuery获取相邻标签的值
<!-- Mazey's jQuery --><script language="javascript" type="text/javascript&q ...
- LeetCode-11-7
1.Reverse String Write a function that takes a string as input and returns the string reversed. Exam ...
- Python API:openstack
OpenStack 是一个越来越流行的.用于部署基础架构即服务 (IaaS) 云的开源解决方案.OpenStack 附带了一个仪表板 Web 应用程序,非常适合执行手动任务,比如启动单个虚拟机 (VM ...
- [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...
- 31 整数中1出现的次数(从1到n整数中1出现的次数)
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- 大数据架构之:Kafka
Kafka 是一个高吞吐.分布式.基于发布订阅的消息系统,利用Kafka技术可在廉价PC Server上搭建起大规模消息系统.Kafka具有消息持久化.高吞吐.分布式.多客户端支持.实时等特性,适用于 ...
- STM32探秘 之FSMC
源:STM32探秘 之FSMC STM32 FSMC总线深入研究