Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。
Beanutils工具包的常用类:
•BeanUtils
•PropertyUtils
•ConvertUtils.regsiter(Converter convert, Class clazz)
•自定义转换器
 
  1. package com.kevin;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import java.lang.reflect.InvocationTargetException;
  6. import java.text.ParseException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11.  
  12. import org.apache.commons.beanutils.BeanUtils;
  13. import org.apache.commons.beanutils.ConversionException;
  14. import org.apache.commons.beanutils.ConvertUtils;
  15. import org.apache.commons.beanutils.Converter;
  16. import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
  17. import org.junit.Test;
  18.  
  19. public class BeanDemo1 {
  20.  
  21. @Test
  22. public void test1() throws IllegalAccessException, InvocationTargetException
  23. {
  24. Person p1 = new Person("kevin");
  25. System.out.println(p1.getName());
  26. BeanUtils.setProperty(p1, "name", "xiang");
  27. System.out.println(p1.getName());
  28. }
  29.  
  30. @Test
  31. public void test2() throws IllegalAccessException, InvocationTargetException
  32. {
  33. String name = "xiangjie";
  34. String age = "23";
  35. String birthday = "1980-09-09";
  36.  
  37. //自己注册日期转换器:String---> Date,实际开发可以用包里实现好的。
  38. ConvertUtils.register(new Converter() {
  39. @Override
  40. public Object convert(Class type, Object value) {
  41. if(value == null)
  42. {
  43. return null;
  44. }
  45. if( !(value instanceof String) )
  46. {
  47. throw new ConversionException("只支持String类型的转换");
  48. }
  49.  
  50. String str = (String) value;
  51. if( str.trim().equals("") )
  52. {
  53. return null;
  54. }
  55.  
  56. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  57. try {
  58. return df.parse(str);
  59. } catch (ParseException e) {
  60. // TODO Auto-generated catch block
  61. throw new RuntimeException(e);
  62. }
  63. }
  64. }, Date.class);
  65.  
  66. Person p2 = new Person();
  67. BeanUtils.setProperty(p2, "name", name);
  68. BeanUtils.setProperty(p2, "age", age);
  69. BeanUtils.setProperty(p2, "birthday", birthday);
  70.  
  71. System.out.println(p2.getName());
  72. System.out.println(p2.getAge());
  73. System.out.println(p2.getBirthday());
  74. }
  75.  
  76. @Test
  77. public void test3() throws IllegalAccessException, InvocationTargetException
  78. {
  79. String name = "xiangjie";
  80. String age = "23";
  81. String birthday = "1980-09-09";
  82.  
  83. //用官方实现的包, 但是有问题
  84. ConvertUtils.register(new DateLocaleConverter(), Date.class);
  85.  
  86. Person p2 = new Person();
  87. BeanUtils.setProperty(p2, "name", name);
  88. BeanUtils.setProperty(p2, "age", age);
  89. BeanUtils.setProperty(p2, "birthday", birthday);
  90.  
  91. System.out.println(p2.getName());
  92. System.out.println(p2.getAge());
  93. System.out.println(p2.getBirthday().toString());
  94.  
  95. }
  96.  
  97. @Test
  98. public void test4() throws IllegalAccessException, InvocationTargetException
  99. {
  100. Map map = new HashMap();
  101. map.put("name", "aaa");
  102. map.put("age", "12");
  103.  
  104. //填充,如果包含有Date这种类型的数据,一样要注册转换器
  105. Person bean = new Person();
  106. BeanUtils.populate(bean, map);
  107.  
  108. System.out.println(bean.getName());
  109. System.out.println(bean.getAge());
  110. }
  111. }

JavaWeb -- 内省—beanutils工具包 的使用的更多相关文章

  1. 内省—beanutils工具包

    Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. BeanU ...

  2. 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性

      本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...

  3. java 内省综合案例和Beanutils工具包

    演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...

  4. 32_使用BeanUtils工具包操作JavaBean

      由于对属性设置值和得到值的需求很多,使用频率很高,所以有一些开源勇士 不满足于JavaBean API 中IntroSpector来操作bean, 写出来了通用的BeanUtils工具,来进一步简 ...

  5. Commons BeanUtils工具包

    简介: BeanUtils工具包是由Apache公司所开发,提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理. 我们知道,一个JavaBean通常包含了大 ...

  6. javaweb学习总结五(内省、beanUtils工具包)

    一:内省的概念 1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射 javabean,sun公司开发出一套API提高效率. 2:javaBean,就是用来封装客户端请求 ...

  7. JavaWeb 之 BeanUtils 工具类

    在上一个用户登录案例中,当从浏览器接收参数后,还需要创建 JavaBean 类,对其的属性每一项赋值,如果属性少,可以手动完成,但是当属性非常多,这时就发现非常不方便,在这里提供一个可以封装 Java ...

  8. JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用

    Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...

  9. javase(14)_java基础增强

    一.Eclipse的使用 1.在eclipse下Java程序的编写和run as,debug as,及java运行环境的配置. 2.快捷键的配置,常用快捷键: •内容提示:Alt + / •快速修复: ...

随机推荐

  1. 在看lua仿单继承

    --lua仿单继承 Account = { balance = } --对于成员变量,第一此访问要使用元表中的,在第一次也赋值到自己的域中了 --将不涉及到__index了 function Acco ...

  2. 1119 机器人走方格 V2(组合)

    1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于 ...

  3. 关于后台传来的json是含英文字母的string

    最近帮朋友写东西,遇上一个比较坑的后台,传来的json是字符串,并且还伴有英文字符,类似 callback({xxx:xxx,xxx:xxx}),我打印了一下后台传来的数据格式,发现时string,所 ...

  4. Xcode生成ipa文件

    想到蒲公英应用做分发测试的同学们可以用的到哈 在测试的Device中切换为IOS Device,选择当前项目修改BuildSeting 在code signing Identity中选择证书,没有测试 ...

  5. 基于websocket搭建简易群聊

    1.前端HTML <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&qu ...

  6. 数据库之MySQL(四)

    数据库中的范式: 第一范式(1NF): 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 1318162008' 依照第一范式 ...

  7. C# emoji 表情如何插入mssql

    如何将emoji表情存入mssql 呢? 在Windows显示emoji(win7需要安装补丁) 在MAC完美支持 步骤就是将显示不出来的emoji UrlEncode=>进入MSsql 然后拿 ...

  8. zabbix-2.4.8-1添加nginx状态监控

    前期准备:nginx在编译是必须要加如下参数: 并且要在nginx的配置文件中添加如下配置: server { listen *: default_server; server_name localh ...

  9. corethink功能模块探索开发(一)根据已有模块推测目录结构

    corethink是opencmf的一个开源版本,如果自己要进行二次开发,开发模块等,需要在官方开一个中级会员(50大洋吧),官网的一个“一键生成demo”就能给你最基础的目录结构,从而可以在此基础上 ...

  10. 通过js代码来制作数据库增删改查插件

    代码流程 1.订制表头:table_config 2.订制显示内容: table_config,data_list 3.加载框: 图片,position:fixed       4.-字符串格式化   ...