Java常用工具包 Jodd

标签: java 工具 jodd | 发表时间:2015-06-30 16:25 | 作者:Kai_Ge
出处:http://www.iteye.com

Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!

写道
Jodd = Tools + IoC + MVC + DB + AOP + TX + JSON + HTML < 1.5 Mb

Jodd 被分成众多模块,按需选择,其中

  • 工具类模块有:

  • 小型框架模块有:

    • jodd-madvoc      一个MVC框架

    • jodd-petite      一个依赖注入容器

    • jodd-lagarto     HTML/XML解析器,包含 JerryCSSelly,让你像jQuery一样筛选HTML节点

    • jodd-lagarto-web Lagarto的Web扩展,包含 DecoraHtmlStapler等等

    • jodd-proxetta    帮你实现动态代理,获取函数参数名

    • jodd-dboom       数据库访问的轻量级封装,可看作一个简单的ORM

    • jodd-json        JSON解析、序列化

    • jodd-vtor        一个基于注解的字段验证框架

Jodd使用示例

JODD中的时间操作类

    package org.xiaochen.test.jodd;
    import java.util.TimeZone;
    import org.apache.log4j.Logger;
    import org.junit.Test;
    import jodd.datetime.JDateTime;
    /**
    * JODD中的时间操作类
    * @author DJZHOU
    *
    */
    public class JDateTimeUtil {
    private Logger log = Logger.getLogger(JDateTimeUtil.class) ;
    @Test
    public void testConstructor()
    {
    /*
    * 构造函数的使用
    */
    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
    }
    @Test
    public void testSet()
    {
    JDateTime jdt = new JDateTime();       // set current date and time
    /*
    * set方法的使用:设定日期时间
    */
    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);
    }
    @Test
    public void testGet()
    {
    JDateTime jdt = new JDateTime();       // set current date and time
    /*
    * get方法的使用:读取日期和时间
    */
    jdt.getYear();
    jdt.getDateTimeStamp();
    log.warn(jdt.getDateTimeStamp());//获取当前时间
    log.warn(jdt.getJulianDate());
    log.warn(jdt.getDay()) ;
    log.warn(jdt.getDayOfMonth()) ;
    log.warn(jdt.getDayOfWeek()) ;
    log.warn(jdt.getDayOfYear()) ;
    log.warn(jdt.getEra()) ;
    log.warn(jdt.getFirstDayOfWeek()) ;
    log.warn(jdt.getFormat()) ;
    }
    @Test
    public void testAdd()
    {
    JDateTime jdt = new JDateTime();       // set current date and time
    jdt.add(1, 2, 3, 4, 5, 6, 7);   // add 1 year, 2 months, 3 days, 4 hours...
    jdt.add(4, 2, 0);          // add 4 years and 2 months
    jdt.addMonth(-120);        // go back 120 months
    jdt.subYear(1);            // go back one year
    jdt.addHour(1234);         // add 1234 hours
    }
    @Test
    public void testAdd2()
    {
    JDateTime jdt = new JDateTime() ;
    log.warn(jdt.toString("YYYY-MM-DD")) ;
    jdt.addDay(-20) ;
    log.warn(jdt.toString("YYYY-MM-DD")) ;
    jdt.addDay(10, true) ;
    log.warn(jdt.toString("YYYY-MM-DD")) ;
    jdt.addYear(1);
    log.warn(jdt.toString("YYYY-MM-DD")) ;
    }
    @Test
    public void testFormat()
    {
    JDateTime jdt = new JDateTime();       // set current date and time
    /**
    * 转换说明
    YYYY   年
    MM     月
    DD     日
    D      一周中的第几天 从周一算起
    MML    月,长型
    MMS    月,短行
    DL     一周中的第几天 长型 从周一算起
    DS     一周中的第几天 短型 从周一算起
    hh     小时
    mm     分钟
    ss     秒
    mss    毫秒
    DDD    一年中的第几天
    WW     一年中的第几周
    WWW    一年中的第几周并用W标识
    W      一个月中的第几周
    E      年代,公元前还是公元后
    TZL    时间长型
    TZS    时间短型
    *
    */
    log.warn(jdt.convertToDate()) ;
    log.warn(jdt.toString("YYYY-MM-DD"));
    log.warn(jdt.toString("YYYY-MM-DD hh:mm:ss"));//转换成字符串
    log.warn(jdt.toString("WW"));//本年度第几周
    log.warn(jdt.toString("YYYY")) ;
    }
    }

 JODD操作properties文件

    package org.xiaochen.test.jodd;
    import java.io.File;
    import java.io.IOException;
    import org.apache.log4j.Logger;
    import org.junit.Test;
    import jodd.props.Props;
    /**
    * JODD操作properties文件
    * @author DJZHOU
    *
    */
    public class PropUtil {
    private static Logger log = Logger.getLogger(PropUtil.class) ;
    @Test
    public void propExam(){
    /*
    * 读取prop文件中的属性值
    */
    Props p = new Props();
    log.warn(URLUtil.getClassPath(this.getClass())+"/a.properties") ;
    try {
    p.load(new File(URLUtil.getClassPath(this.getClass())+"/a.properties"));
    } catch (IOException e) {
    e.printStackTrace();
    }
    String story = p.getValue("a");
    log.warn(p.getBaseValue("a")) ;
    log.warn(story);
    log.warn(null == p.getValue("a")) ;
    log.warn(p.toString()) ;
    p.setValue("c", "cc") ;
    }
    }

 JODD操作email类

    package org.xiaochen.test.jodd;
    import java.io.File;
    import java.io.IOException;
    import org.junit.Test;
    import jodd.io.FileUtil;
    import jodd.mail.Email;
    import jodd.mail.EmailAttachment;
    import jodd.mail.EmailMessage;
    import jodd.mail.SendMailSession;
    import jodd.mail.SmtpSslServer;
    import jodd.mail.att.ByteArrayAttachment;
    import jodd.mail.att.FileAttachment;
    import jodd.util.MimeTypes;
    /**
    * JODD操作email类
    *
    * @author DJZHOU
    *
    */
    public class EmailUtil
    {
    public static void main(String[] args)
    {
    Email email = Email.create();
    email.addMessage(new EmailMessage("消息"));
    email.addText("邮件内容");
    email.embedFile(new File("d:/console.txt"));
    email.from("[email protected]").to("[email protected]");
    email.subject("主题");
    SendMailSession mailSession = new SmtpSslServer("smtp.qq.com//发送端邮箱服务器协议", "发送端QQ邮箱", "发送端QQ邮箱密码").createSession();
    mailSession.open();
    mailSession.sendMail(email);
    mailSession.close();
    System.out.println("发送成功!...");
    }
    @Test
    public void test() throws IOException
    {
    Email email = new Email();
    email.setFrom("[email protected]");
    email.setTo("[email protected]");
    email.setSubject("test7");
    EmailMessage textMessage = new EmailMessage("Hello!", MimeTypes.MIME_TEXT_PLAIN);
    email.addMessage(textMessage);
    EmailMessage htmlMessage = new EmailMessage(
    "" +
    "Hey!jodd使用示例Hay!",
    MimeTypes.MIME_TEXT_HTML);
    email.addMessage(htmlMessage);
    EmailAttachment embeddedAttachment =
    new ByteArrayAttachment(FileUtil.readBytes("d:\\c.png"), "image/png", "c.png", "c.png");
    email.attach(embeddedAttachment);
    EmailAttachment attachment = new FileAttachment(new File("d:\\b.jpg"), "b.jpg", "image/jpeg");
    email.attach(attachment);
    }
    }

 String字符串的操作工具类

package org.xiaochen.test.jodd;
    import org.junit.Test;
    import jodd.util.StringUtil;
    /**
    * String字符串的操作工具类,太强大以至于我要发疯
    *
    * @author DJZHOU
    *
    */
    public class StringExamUtil
    {
    @Test
    public void stringExam()
    {
    String exam = "abcdefg10101010abcdefg";
    String result = "";
    /*
    * replace 字符替换
    */
    // 将字符串exam中的a替换成b
    result = StringUtil.replace(exam, "a", "b");
    // 将字符串exam中的a替换成8,b替换成9
    result = StringUtil.replace(exam, new String[] { "a", "b" }, new String[] { "8", "9" });
    // 将字符串exam中的a替换成b 这里是替换字符
    result = StringUtil.replaceChar(exam, 'a', 'b');
    // 将字符串exam中的a替换成8,b替换成9 这里是替换字符
    result = StringUtil.replaceChars(exam, new char[] { 'a', 'b' }, new char[] { '8', '9' });
    // 将字符串exam中的第一个a替换成b
    result = StringUtil.replaceFirst(exam, "a", "b");
    // 将字符串exam中的第一个a替换成b 这里是替换字符
    result = StringUtil.replaceFirst(exam, 'a', 'b');
    // 将字符串exam中的最后一个a替换成b
    result = StringUtil.replaceLast(exam, "a", "b");
    // 将字符串exam中的最后一个a替换成b 这里是替换字符
    result = StringUtil.replaceLast(exam, 'a', 'b');
    // 将字符串exam中的a和A替换成FF b和B替换成gg 即忽略大小写
    result = StringUtil.replaceIgnoreCase(exam, new String[] { "a", "b" }, new String[] { "FF", "gg" });
    /*
    * remove 字符移除
    */
    // 将字符串exam中的a移除
    result = StringUtil.remove(exam, "a");
    // 将字符串exam中的a移除 移除的是字符
    result = StringUtil.remove(exam, 'a');
    // 将字符串exam中的a b移除 移除的是字符 最后一个参数为无限参数
    result = StringUtil.removeChars(exam, 'a', 'b');
    // 将字符串exam中的a移除
    result = StringUtil.removeChars(exam, "a");
    /*
    * 判断字符串是否为空
    */
    // 判断字符串exam是否为空
    System.out.println(StringUtil.isEmpty(exam));
    // 判断字符串exam是否不为空
    System.out.println(StringUtil.isNotEmpty(exam));
    // 判断字符串exam是否为空 这里的空为去掉空格之后
    System.out.println(StringUtil.isBlank("  "));
    // 判断字符串exam是否不为空 这里的空为去掉空格之后
    System.out.println(StringUtil.isNotBlank("  "));
    // 判断字符串(无限参数)是否都为空 他们之间的关系为并且
    System.out.println(StringUtil.isAllEmpty(exam, " ", "null"));
    // 判断字符串(无限参数)是否都为空 这里的空为去掉空格之后 他们之间的关系为并且
    System.out.println(StringUtil.isAllBlank(exam, " ", "null"));
    // 对比字符串exam中的第4索引的字符是不是d
    System.out.println(StringUtil.isCharAtEqual(exam, 4, 'd'));
    // 对比字符串exam中的第4索引的字符是不是 不是d
    System.out.println(StringUtil.isCharAtEscaped(exam, 4, 'd'));
    /*
    * equals安全的字符串对比是否相等 不需要考虑null.equals等问题
    */
    // 判断字符串exam与aaa是否相等
    System.out.println(StringUtil.equals(exam, "aaa"));
    // 判断两个数组是否相等
    System.out.println(StringUtil.equals(new String[] { "aaa" }, new String[] { "aaa", "bbb" }));
    // 判断两个数组是否相等 且忽略大小写
    System.out.println(StringUtil.equalsIgnoreCase(new String[] { "aaa" }, new String[] { "aaa", "bbb" }));
    // 获取字符串bbb在数组中的索引
    System.out.println(StringUtil.equalsOne("bbb", new String[] { "aaa", "bbb" }));
    // 获取字符串bbb在数组中的索引 且忽略大小写
    System.out.println(StringUtil.equalsOneIgnoreCase("bbb", new String[] { "aaa", "bbb" }));
    /*
    * 首字母的更改
    */
    // 首字母大写
    result = StringUtil.capitalize(exam);
    // 首字母小写
    result = StringUtil.uncapitalize(exam);
    /*
    * split字符串分割
    */
    // 将字符串按 , 分割
    String[] array = StringUtil.split("1,2,3,4,5,6,7,8", ",");
    /*
    * indexOf 获取字符串中的字符索引
    */
    /*
    * Strips, crops, trims and cuts
    */
    // 若这个字符串以a为开头,则去掉a
    result = StringUtil.stripLeadingChar(exam, 'a');
    // 若这个字符串以g为结尾,则去掉g
    result = StringUtil.stripTrailingChar(exam, 'g');
    // 若该字符串为"" 则返回null 若不是则返回字符串
    result = StringUtil.crop("");
    // 裁剪数组 将""变成null
    StringUtil.cropAll(new String[] { "", " " });
    // 去掉字符串两边的空格
    result = StringUtil.trimDown(" aa ");
    // 去掉字符串左边的空格
    result = StringUtil.trimLeft(" aa ");
    // 去掉字符串右边的空格
    result = StringUtil.trimRight(" aa ");
    // 去掉字符串右边的空格
    String[] array2 = new String[] { " aa ", " b b" };
    /*
    * 去掉数组内空格
    */
    StringUtil.trimAll(array2);
    StringUtil.trimDownAll(array2);
    for (String string : array2)
    {
    System.out.println(string);
    }
    /*
    * 切割字符串
    */
    // 从字符串的f字符开始切割字符串 保留f
    result = StringUtil.cutFromIndexOf(exam, 'f');
    // 从字符串的fg字符串开始切割字符串 保留fg
    result = StringUtil.cutFromIndexOf(exam, "fg");
    // 检查字符串是否为abc开头,若为此开头,则切割掉abc
    result = StringUtil.cutPrefix(exam, "abc");
    // 检查字符串是否为efg结尾,若为此结尾,则切割掉efg
    result = StringUtil.cutSuffix(exam, "efg");
    // 检查字符串是否为efg开头或结尾,若为此开头或结尾,则切割掉efg
    result = StringUtil.cutSurrounding(exam, "efg");
    // 检查字符串是否为abc开头efg结尾,若为为abc开头efg结尾,则切割掉
    result = StringUtil.cutSurrounding(exam, "abc", "efg");
    // 截取到字符串的f字符开始切割字符串 不保留f
    result = StringUtil.cutToIndexOf(exam, 'f');
    // 截取到字符串的fg字符串开始切割字符串 不保留fg
    result = StringUtil.cutToIndexOf(exam, "fg");
    /*
    * 其他很多小巧的方法,可以自行研究
    */
    System.out.println(result);
    }
    }

 

附:jodd-3.4.10.zip





已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [java 工具 jodd] 推荐:

Java常用工具包 Jodd

- - Java - 编程语言 - ITeye博客
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架. Jodd 被分成众多模块,按需选择,其中. jodd-core        一些工具类,包括. Fast buffers等等. jodd-bean        BeanUtil以及类型检查转换工具. jodd-props       更强大的Java Properties替代.

Jodd - 不仅仅是个工具包

- - Java - 编程语言 - ITeye博客
Jodd - 不仅仅是个工具包. TypeConverter 一个强大的类型转换工具. BeanUtil 高效的Bean工具,支持嵌套的属性,以及标准的集合类. JDateTime 增强的时间类. IO 快速高性能的各种Buffer、Writer、OutputStream. Wildcard 通配符工具.

Java开源建站工具

- Amom - 阮一峰的网络日志
美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单. 他的语言平台是Java,开发项目是一个网站(还未上线). 所用到的工具都是开源的,可以免费得到. 在目前的创业者之中,用Java作为网站开发语言的人似乎很少. 这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事.

java监测工具之jstat

- - 开源软件 - ITeye博客
用以判断JVM是否存在内存问题呢. 如何判断JVM垃圾回收是否正常. 一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序. Jstat是JDK自带的一个轻量级小工具. 全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控.

java图片处理工具

- - CSDN博客推荐文章
作者:kuanghongjiang 发表于2015-2-1 15:45:51 原文链接. 阅读:0 评论:0 查看评论.

Java监控常用工具

- - 编程语言 - ITeye博客
Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助. 用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等. -l: 输出完成的包名称;. -m: 输出程序的命令行输入参数;. -v: 输出完整的JVM参数. 用途:1)查看java程序崩溃生成core文件,获得core文件的java stack和native stack的信息;2)查看正在运行的java程序的java stack和native stack的信息:a) 查看运行的java程序呈现hung的状态;b) 跟踪Java的调用栈,剖析程序.

Java并发工具类CyclicBarrier

- - CSDN博客编程语言推荐文章
CyclicBarrier同步屏障. java并发工具类中有一个叫做CyclicBarrier的类,与CountDownLatch类似,都可以实现线程间的同步,但是差别是CyclicBarrier是可重置的同步屏障. 想象一个场景,有N个人不同时间走到一扇门,因为门需要N个人合力才能推开,所以人不足N个时,只能阻塞在此,等到N个人都到了之后,可以推开门,继续进行之前的工作.

简约之美Jodd-http--应用一箩筐

- - zzm
Jodd-http是一个微型的、简约的http client,然而简单而且方便. 使用它可以轻松的实现发送请求和读取响应. 它的目标就是日常应用变的非常简单,从而简化开发人员的工作. 了解Jodd-http的最好方法就是示例程序. 上述代码实现了一个get请求,并打印出响应结果. 好吧,了解一下请求的样式吧:.

Java程序员常用工具集

- - BlogJava-庄周梦蝶
    我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了. 我想列下我能想到的一个Java程序员会用到的常用工具. 1.IDE: Eclipse或者 IDEA,熟悉尽可能多的快捷键,《 Eclipse常见快捷键列表》. (1) Findbugs,在release之前进行一次静态代码检查是必须的.