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 + / •快速修复: ...
随机推荐
- 超哥mysql数据库部分blog整理:
总目录:mysql数据库阶段学习目录 https://www.cnblogs.com/clschao/articles/10065275.html Day1. 1.数据库初识 https://www. ...
- A C Program to demonstrate adjacency list representation of graphs
w Graph and its representations - GeeksforGeekshttp://www.geeksforgeeks.org/graph-and-its-representa ...
- <2013 07 05> 804.15. 4--> TI MSP430+CC2520 调试
这一周,实际参与eCar项目的工作正式展开. 来TUM的第一个月,主要熟悉了eCar的机电结构,特别是熟悉了eCar的IT(Information Technology),包括硬件和代码. 来的时候, ...
- 作为一名合格的JAVA程序员需要点亮那些技能树?
以下是出现次数超过100的一些技能,大家可以做一个参考. Spring 299 MySQL 290 JavaScript 216Linux 165J2EE 151设计模式 148Struts2 138 ...
- MySQL 的约束
约束是添加在列上, 用来约束列的! 1. 主键约束(表中的某行的唯一标识) 主键的特点: 非空 唯一 被引用 创建表时, 指定主键的两种方式: // 需求: 指定 sid 列为主键列, 即为 sid ...
- Windows常见窗口样式和控件风格
Windows常见窗口样式和控件风格 王佰营 徐丽红 一.窗口样式 WS_POPUP 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW 子窗口(不能与WS_PO ...
- android 手机设置铃声
和应用程序相比,普通用户在初初接触智能手机时最先反而会对多媒体功能产生兴趣,尤其是铃声.壁纸设定之类个性化功能,更是让不少追求时尚的年轻人乐此不疲.对于Android手机来说,其铃声.图片的个性化空间 ...
- 常用的JS代码块收集
/**数组去重一*/ (function (arr) { arr = arr.sort(); for (var i = 0; arr[i]; i++) { if (arr[i] === arr[i + ...
- Windows下比较小巧的c/c++ ide
下载:codeblocks 只有几十兆. http://www.codeblocks.org/downloads/26#windows codeblocks-16.01mingw-nosetup.zi ...
- 常用模块一(random模块、time模块、sys模块)
一.random模块 import random # 1 取随机小数 应用:数学计算 ret = random.random() # 大于0且小于1之间的小数 print(ret) # 0.53559 ...