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

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

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

  • 工具类模块有:

    • jodd-core        一些工具类,包括Printf、JDateTime、StringUtil、Fast buffers等等

    • jodd-bean        BeanUtil以及类型检查转换工具

    • jodd-props       更强大的Java Properties替代

    • jodd-email       更简单易用的e-mail收发

    • jodd-upload      处理HTTP上传

    • jodd-servlets    一些Servlet相关的工具类, 附带一套漂亮的JSP标签库

    • jodd-http        轻巧的HTTP客户端

  • 小型框架模块有:

    • jodd-madvoc      一个MVC框架

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

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

    • jodd-lagarto-web Lagarto的Web扩展,包含Decora、HtmlStapler等等

    • 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) ;@Testpublic void testConstructor(){/** 构造函数的使用*/JDateTime jdt = new JDateTime();       // set current date and timejdt = new JDateTime(2012, 12, 21);     // set 21st December 2012, midnightjdt = new JDateTime(System.currentTimeMillis());jdt = new JDateTime(2012, 12, 21, 11, 54, 22, 124); // set 21st December 2012, 11:54:22.124jdt = new JDateTime("2012-12-21 11:54:22.124");    // -//-jdt = new JDateTime("12/21/2012", "MM/DD/YYYY");   // set 21st December 2012, midnight}@Testpublic 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.124jdt.set(2012, 12, 21);                     // set 21st December 2012, midnightjdt.setDate(2012, 12, 21);                 // change date to 21st December 2012, do not change te timejdt.setCurrentTime();                      // set current date and timejdt.setYear(1973);                         // change the yearjdt.setHour(22);                           // change the hourjdt.setTime(18, 00, 12, 853);}@Testpublic 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()) ;}@Testpublic void testAdd(){JDateTime jdt = new JDateTime();       // set current date and timejdt.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 monthsjdt.addMonth(-120);        // go back 120 monthsjdt.subYear(1);            // go back one yearjdt.addHour(1234);         // add 1234 hours}@Testpublic 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")) ;}@Testpublic 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) ;@Testpublic 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("771842634@qq.com").to("771842634@qq.com");email.subject("主题");SendMailSession mailSession = new SmtpSslServer("smtp.qq.com//发送端邮箱服务器协议", "发送端QQ邮箱", "发送端QQ邮箱密码").createSession();mailSession.open();mailSession.sendMail(email);mailSession.close();System.out.println("发送成功!...");}@Testpublic void test() throws IOException{Email email = new Email();email.setFrom("infoxxx@jodd.org");email.setTo("igorxxxx@gmail.com");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{@Testpublic void stringExam(){String exam = "abcdefg10101010abcdefg";String result = "";/** replace 字符替换*/// 将字符串exam中的a替换成bresult = StringUtil.replace(exam, "a", "b");// 将字符串exam中的a替换成8,b替换成9result = 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替换成bresult = StringUtil.replaceFirst(exam, "a", "b");// 将字符串exam中的第一个a替换成b 这里是替换字符result = StringUtil.replaceFirst(exam, 'a', 'b');// 将字符串exam中的最后一个a替换成bresult = 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索引的字符是不是dSystem.out.println(StringUtil.isCharAtEqual(exam, 4, 'd'));// 对比字符串exam中的第4索引的字符是不是 不是dSystem.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为开头,则去掉aresult = StringUtil.stripLeadingChar(exam, 'a');// 若这个字符串以g为结尾,则去掉gresult = StringUtil.stripTrailingChar(exam, 'g');// 若该字符串为"" 则返回null 若不是则返回字符串result = StringUtil.crop("");// 裁剪数组 将""变成nullStringUtil.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字符开始切割字符串 保留fresult = StringUtil.cutFromIndexOf(exam, 'f');// 从字符串的fg字符串开始切割字符串 保留fgresult = StringUtil.cutFromIndexOf(exam, "fg");// 检查字符串是否为abc开头,若为此开头,则切割掉abcresult = StringUtil.cutPrefix(exam, "abc");// 检查字符串是否为efg结尾,若为此结尾,则切割掉efgresult = StringUtil.cutSuffix(exam, "efg");// 检查字符串是否为efg开头或结尾,若为此开头或结尾,则切割掉efgresult = StringUtil.cutSurrounding(exam, "efg");// 检查字符串是否为abc开头efg结尾,若为为abc开头efg结尾,则切割掉result = StringUtil.cutSurrounding(exam, "abc", "efg");// 截取到字符串的f字符开始切割字符串 不保留fresult = StringUtil.cutToIndexOf(exam, 'f');// 截取到字符串的fg字符串开始切割字符串 不保留fgresult = StringUtil.cutToIndexOf(exam, "fg");/** 其他很多小巧的方法,可以自行研究*/System.out.println(result);}}

附:jodd-3.4.10.zip

Java常用工具包 Jodd相关推荐

  1. Java常用工具包 Jodd jar包

    Jodd是一个普通开源Java包.你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能. Jodd 提供的功能有: 1. 提供操作Java bean, ...

  2. java apache commons_Apache commons(Java常用工具包)简介

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

  3. 一篇让你熟练掌握Java常用工具包(全网最全)

    文章目录 Apache Commons类库 1 BeanUtils 2 Codec 3 Collections 4 I/O 4.1 工具类 4.2 尾端类 4.3 行迭代器 4.4 文件过滤器 4.5 ...

  4. Java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)

    来至于互联网 Office文档的Java处理包 POI [推荐] Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: ...

  5. Java 工具包 Jodd

    java工具包Jodd Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! Jodd 被分成众多模块,按需选择,其中 工具类模块: jodd-core 一些工 ...

  6. 2017可以兼容那些jdk_2019从头跃——核心基础:何为JDK?Java开发工具包须知总览...

    摘要:JDK是构建Java应用程序的关键平台组件. 其核心是Java编译器. 1.导引 Java Development Kit(JDK)是Java编程中使用的三个核心技术包之一,相伴随的另两个是JV ...

  7. java 常用的五大包

    常用的五个 java.lang.* 提供利用 Java 编程语言进行程序设计的基础类.最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类). java ...

  8. Java常用术语解释

    名词 解释 AAA 认证(Authentication):验证用户的身份与可使用的网络服务:授权(Authorization):依据认证结果开放网络服务给用户:计帐(Accounting):记 录用户 ...

  9. java常用英语单词

    abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.riem] annotat ...

最新文章

  1. 高兴总结台式故障分析==方案
  2. 【设计模式】各设计模式设计的可变部分的支持
  3. 分布式文件系统—HDFS—基本介绍
  4. 实战-130W表增加字段耗时
  5. 深入分析 Flutter 渲染性能
  6. 【转载】浅析输入法原理
  7. python 常用包_七月在线—Python和数据分析Lesson 1
  8. 【鲲鹏来了】手把手教你在鲲鹏上使用编程语言——C语言
  9. Ubuntu禁用网卡步骤(重启依然生效)
  10. Android网络请求通信之Volley
  11. 等式约束二次规划——变量消除法和KKT法
  12. 有哪些优秀的程序员社区
  13. 网页中MP4视频格式要求
  14. 登录模块 用户认证 SpringSecurity +Oauth2+Jwt
  15. Emacs_HotKey
  16. 试位法的matlab程序步骤,MATLAB程序设计导论简介,目录书摘
  17. duilib制作窗体动画效果
  18. Python调用百度AI接口体验人像动漫化
  19. 奢侈手机的自我修养:VERTU纬图20周年再发新机
  20. 怎样快速对二进制和十进制进行互转化——IP地址规划与设计总结

热门文章

  1. OAuth2四种认证模式
  2. 手把手Android Studio全套安装+配置+真机部署教程【多图超详细】
  3. 双显示器 启动黑屏 黑苹果_黑苹果修改分辨率之后黑屏(频率超出显示器范围)...
  4. 多卡聚合融合通信设备 在应急行业领域应用解决方案
  5. 去除、添加 Windows7 桌面的 IE 图标
  6. 护眼灯AA和A等级有怎样的区别?推荐高品质护眼灯
  7. 前端内存泄漏及前端如何利用调试工具查看内存泄露
  8. json转义html
  9. 芯科EmberZNet_ZigBee3.0_EFR32MG开发日记一:ZigBee3.0解决方案选型
  10. 硕士导师每个月补贴_每个软件开发人员需要的五位导师以及如何找到他们