java利器---jodd
网上对Jodd的描述如下:
Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。
Jodd 提供的功能有:
1. 提供操作Java bean,
2. 可以从各种数据源加载Bean,
3. 简化JDBC的接连与代码,
4. 剖析SQL查询,
5. 处理时间与日期,
6. 操作与格式化String,
7. 搜索本地硬盘上的文件,
8. 帮助处理Servlet请求等。
9.Madvoc - 一个简单的MVC框架,用CoC和注解的方式
10. Petite:一个轻量级的DI(注入)框架
11.Proxetta:一个高效的动态代理框架
12. Db & DbOom:高效,轻量级的数据库处理框架
13. Paramo:在运行时,非常简单的获取方法和构造方法的参数
14. JTX:提供一个独立的,轻量级的事务管理器
15.VTor:实用的验证框架,可以针对任何Java 对象
16. Lagarto:高效,灵活的通用HTML解析器
17.Decora:基于模板的页面装饰框架。
18. Jerry:友好的jQuery java解析器,支持CSS选择器
除此之外还包含一个很小,但实用的基于JSP的MVC框架。
---------------------------------------------------
不扯哪些没有的了,还是通过例子来说明问题比较好。
去官方下载最新的jodd吧,我下载的版本是jodd-3.3.3 下载地址:http://jodd.org
- BeanUtil的使用
通过BeanUtil,可以对bean的属性进行控制(注入);类型转换等
public class UserPojo {
private String name;
private String add;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAdd() {
return add;
}
}
----------------------------------------
@Test
public void testBeanUtil() {
UserPojo userPojo = new UserPojo();
BeanUtil.setProperty(userPojo, "name", "zhaoyang"); //设置name属性值为zhaoyang
System.out.println(">>>>> " + BeanUtil.getProperty(userPojo, "name")); //获取name属性值
BeanUtil.setDeclaredProperty(userPojo, "add", "beijing"); //add是只读属性,如果用setProperty(~)就会报错,可以用声明式属性,强制属性赋值
System.out.println(">>>>> " + BeanUtil.getDeclaredProperty(userPojo, "add"));
int dd = TypeConverterManager.convertType("23", Integer.class); //类型转换,将字符串“23”转换为Integer类型
System.out.println("@@ " + (dd - 3));
System.out.println("#### " + BeanTool.attributesToString(userPojo)); //打印出bean的结构
}
执行结果:
BeanTool还有其他一些常用的方法,如
copy(java.lang.Object source, java.lang.Object destination) :只copy公共属性
copyFields(java.lang.Object source, java.lang.Object destination) copy 所有的字段值到目标对象
copyProperties(java.lang.Object source, java.lang.Object destination)
load(java.lang.Object bean, java.lang.Object source)
另外 BeanTemplateParser可以把Bean按照模版的显示方式进行解析,转换。官方例子
日期处理 - JDateTime
日期设置。可以通过构造函数,或者set(~)进行
JDateTime jdt = new JDateTime(); // set current date and time
jdt = new JDateTime(2012, 12, 21): // set 21st December 2012, midnight
jdt = new JDateTime(System.currentTimeMillis());
jdt = new JDateTime(2012, 12, 21, 11, 54, 22, 124) // set 21st December 2012, 11:54:22.124
jdt = new JDateTime("2012-12-21 11:54:22.124"); // -//-
jdt = new JDateTime("12/21/2012", "MM/DD/YYYY"); // set 21st December 2012, midnight
或者:
JDateTime jdt = new JDateTime(); // set current date and time
jdt.set(2012, 12, 21, 11, 54, 22, 124); // set 21st December 2012, 11:54:22.124
jdt.set(2012, 12, 21); // set 21st December 2012, midnight
jdt.setDate(2012, 12, 21); // change date to 21st December 2012, do not change te time
jdt.setCurrentTime(); // set current date and time
jdt.setYear(1973); // change the year
jdt.setHour(22); // change the hour
jdt.setTime(18, 00 12, 853); // change just time, date remains the same
读取日期和时间
@Test
public void testJDateTime() {
JDateTime jDateTime = new JDateTime();
int year = jDateTime.getYear();
System.out.println(">>>> " + year);
System.out.println("@@@@ " + JDateTime.JANUARY);
System.out.println("### " + jDateTime.getFormat());
System.out.println("### " + jDateTime.toString("YYYY-MM-DD hh")); //转换为字符串,可以自定义格式
jDateTime.convertToDate(); //日期转换为java.util.Date
jDateTime.convertToSqlDate(); //转换为java.sql.Date
jDateTime.add(-1,0,0); //日期向后减去1年
System.out.println("$$$$ " + jDateTime.toString("YYYY-MM-DD hh")); //转换为字符串,可以自定义格式
}
执行结果:
属性读取 - Props
属性文件如下:
key1=value1
key2 : value2
[section1]
key.with.macro = val_${key}
[ ]
key<profile1> = value A
key<profile2> = value B
默认 props文件是UTF8编码,无论是什么编码,Props加载properties文件用 ISO 8859-1这种编码格式
基本使用方式:
Props p = new Props();
p.load(new File("example.properties"));
...
String stroy = p.getValue("story");
----------- Sections 的获取-------------
properties文件如下:
[users.data]
weitht = 49.5
age=23
获取方式:
users.data.weitht = 49.5
users.data.age = 63
--------- Profiles的获取 -------------
properties文件如下:
或者是:
获取方法为:
----------- 宏命令 -----------------
key1的结果为 Something nice
key1的结果为:**foo**
--------------------------------
放送和接收邮件 - Email
官方有详尽的说明(http://jodd.org/doc/email.html)
1.首先定义一个邮件(可以是HTML格式的,也可以是普通格式的)
2.添加一个带附件的邮件
3.定义邮件服务器,发送邮件
session.close();
4. 用SSL发送邮件
session.close();
5.接收邮件
类型转换 - Converter
如图示,非常丰富:
更加偏爱的一种转换方法:
TypeConverterManager.convertType("173", Integer.class);
就是使用 TypeConverterManager对象
当然还可以自定义转换器
查找文件和文件夹
FindFile
例子:
--------------------
--------- FileScanner ------------------
----------------- WildcardFileScanner ------------------------