文档章节

Java-No.13 Apache Commons工具集整理

蓝汀华韶
 蓝汀华韶
发布于 2015/10/13 12:33
字数 597
阅读 108
收藏 10

Apache Commons工具类整理如下:

1、BeanUtils

package com.shma.common.beanutils;

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.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;

/**
 * JavaBean操作工具类
 * @author admin
 *
 */
public class BeanUtilsTest {

	@Test
	public void testProperty01() throws ClassNotFoundException,
			InstantiationException, IllegalAccessException,
			InvocationTargetException {

		Class<?> clazz = Class.forName("com.shma.common.beanutils.Person");
		Person person = (Person) clazz.newInstance();

		BeanUtils.setProperty(person, "name", "张三");
		
		//使用默认的日期格式化
		ConvertUtils.register(new DateLocaleConverter(), Date.class);
		BeanUtils.setProperty(person, "date", "1989-12-07");
		
		System.out.println(person);

	}
	
	public Person testProperty02() throws IllegalAccessException, InvocationTargetException {
		Person person = new Person();
		
		BeanUtils.setProperty(person, "id", 1);
		BeanUtils.setProperty(person, "name", "李四");
		
		ConvertUtils.register(new Converter() {
			
			@Override
			public Date convert(Class clazz, Object value) {
				if(value == null)
					return null;
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				Date date = null;
				try {
					date = sdf.parse(String.valueOf(value));
				} catch (ParseException e) {
					e.printStackTrace();
				}
				
				return date;
			}
			
		}, Date.class);
		
		BeanUtils.setProperty(person, "date", "2015-10-13 11:53:54");
		
		System.out.println(person);
		
		return person;
	}
	
	@Test
	public void testClone() throws Exception {
		Person person = testProperty02();
		
		Person newPerson = (Person) BeanUtils.cloneBean(person);
		
		System.out.println(newPerson);
		
		System.out.println(newPerson == person);
		
	}
	
	@Test
	public void testMap2Bean() throws Exception {
		
		Map<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("id", 2);
		dataMap.put("name", "王五");
		dataMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
		
		// map转bean
		Person person = new Person();
		ConvertUtils.register(new DateLocaleConverter(), Date.class);
		BeanUtils.populate(person, dataMap);
		System.out.println(person);
		
		// bean转map
		Person person2 = testProperty02();
		Map<String, String> newDataMap = BeanUtils.describe(person2);
		System.out.println(newDataMap);
		
	}

}

package com.shma.common.beanutils;

import java.util.Date;

public class Person {

	private int id;
	
	private String name;
	
	private Date date;

	public Person() {
		super();
	}

	public Person(int id, String name, Date date) {
		super();
		this.id = id;
		this.name = name;
		this.date = date;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", date=" + date + "]";
	}

}

2、betwixt:xml转bean,bean转xml

package com.shma.common.betwixt;

import java.beans.IntrospectionException;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;

import org.apache.commons.betwixt.io.BeanReader;
import org.apache.commons.betwixt.io.BeanWriter;
import org.junit.Test;
import org.xml.sax.SAXException;

public class BetwixtTest {

	@Test
	public void bean2Xml() throws IOException, SAXException, IntrospectionException {

		StringWriter sWriter = new StringWriter();
		sWriter.write("<?xml version='1.0' encoding='UTF-8' ?>\n");

		BeanWriter beanWriter = new BeanWriter(sWriter);

		beanWriter.getXMLIntrospector().getConfiguration()
				.setAttributesForPrimitives(false);
		beanWriter.getBindingConfiguration().setMapIDs(false);
		
		beanWriter.write("person", new Person("马韶华", 26));
		
		System.out.println(sWriter.toString());
		
		/**
		 * <?xml version='1.0' encoding='UTF-8' ?>
			<person>
				<age>26</age>
				<name>马韶华</name>
			</person>
		 * 
		 */
		
		sWriter.flush();
		sWriter.close();
		
	}
	
	@Test
	public void xml2Bean() {
		String xml = "<?xml version='1.0' encoding='UTF-8' ?><person><age>26</age><name>马韶华</name></person>";
		StringReader sReader = new StringReader(xml);
		
		BeanReader beanReader = new BeanReader();
		beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
		beanReader.getBindingConfiguration().setMapIDs(false);
		
	}
}

package com.shma.common.betwixt;

public class Person {

	private String name;
	
	private int age;

	public Person() {
		super();
	}

	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

3、codec:加密解密

package com.shma.common.codec;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Test;

public class CodecUtilsTest {

	@Test
	public void testMd5() {
		String key = "123456";
		
		System.out.println(DigestUtils.md5(key));
		System.out.println(DigestUtils.md5(key.getBytes()));
		
		System.out.println(DigestUtils.md5Hex(key));
		System.out.println(DigestUtils.md5Hex(key.getBytes()));
		
		
	}
	
	@Test
	public void testSHA() {
		String key = "123456";
		
		System.out.println(DigestUtils.shaHex(key));
		System.out.println(DigestUtils.shaHex(key.getBytes()));
		
		System.out.println(DigestUtils.sha(key));
		System.out.println(DigestUtils.sha(key.getBytes()));
	}
	
	/**
	 * 加密解密算法:BASE64
	 */
	@Test
	public void base64() {
		String key = "abc";
		byte[] bytes = Base64.encodeBase64(key.getBytes(), true);
		
		String newKey = new String(bytes);
		System.out.println(newKey);
		
		byte[] currKey = Base64.decodeBase64(newKey.getBytes());
		System.out.println(new String(currKey));

	}

}


© 著作权归作者所有

共有 人打赏支持
蓝汀华韶
粉丝 36
博文 77
码字总数 80082
作品 0
海淀
程序员
Apache commons (Java常用工具包)简介

Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html BeanUtils Commons-BeanUtils 提供对 Java...

Coder小兵
2012/02/04
0
0
Apache Commons Lang 3.8.1 发布,Java 常用工具包

Apache Commons Lang 3.8.1 发布了,这是 Commons 项目中用来处理 Java 基本对象方法的工具类包,可以简化很多平时经常要用到的写法,例如判断字符串是否为空等等。 3.8.1 下载地址 >>> http...

局长
09/25
0
0
国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

强子哥哥
2015/11/16
0
1
推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

huntering
2015/01/13
0
0
GitHub上最流行的10000个Java都使用了哪些库?

Java开发者所使用的Java语言已经很成熟且高度进化,目前常常要面临的问题是何时写新代码——是追随每个人都在讨论的新的热门技术,还是坚持使用经过考验证明可靠的库? 事实上,由于很大一部...

翟志军
2014/04/24
0
13

没有更多内容

加载失败,请刷新页面

加载更多

《Netkiller Java 手札》· 二进制文件操作大全

本文节选自《Netkiller Java 手札》 Netkiller Java 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com> $Id: book.xml 6......

netkiller-
25分钟前
1
0
Fiddler Debugger post请求

常用的两种: 第一种默认的 对应URL为www 的要用请求头为:Content-Type: application/x-www-form-urlencoded 请求参数为 :param1=1234¶m2=12345 注:有些接口是指定用这种的第二方式并不...

轻量级赤影
33分钟前
2
0
如何搭建母婴亲子类知识社区

近期社交领域融资动作频繁,海尔高管、海尔医疗有限公司总裁管礼庆创办的母婴知识分享社区平台Alwayslove于上月获得700万天使轮融资。 Alwayslove是一个母婴知识分享社区平台,采用UGC模式,...

ThinkSNS账号
35分钟前
1
0
Android 自定义构建类型 BuildType

最近接触到自定义构建类型 BuildType,发现这一块有些地方稍不注意的话会被绕进去浪费点时间,既然我这边已经花费时间了,如果正好你也需要接触到 BuildType,也许接下来分享的 tips 可能会帮...

猴亮屏
36分钟前
1
0
美团点评基于 Flink 的实时数仓建设实践

引言 近些年,企业对数据服务实时化服务的需求日益增多。本文整理了常见实时数据组件的性能特点和适用场景,介绍了美团如何通过 Flink 引擎构建实时数据仓库,从而提供高效、稳健的实时数据服...

美团技术团队
39分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部