java jodd框架介绍及使用示例

简介: Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。Jodd 提供的功能有: 提供操作Java bean, 可以从各种数据源加载Bean, 简化JDBC的接连与代码, 剖析SQL查询, 处理时间与日期, 操作与格式化String, 搜索本地硬盘上的文件, 帮助处理Servlet请求等。

Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。Jodd 提供的功能有:
 提供操作Java bean,
 可以从各种数据源加载Bean,
 简化JDBC的接连与代码,
 剖析SQL查询,
 处理时间与日期,
 操作与格式化String,
 搜索本地硬盘上的文件,
 帮助处理Servlet请求等。
除此之外还包含一个很小,但实用的基于JSP的MVC框架。

 

jodd使用示例:

JODD中的时间操作类

jodd时间操作

 1 import jodd.datetime.JDateTime;
 2 
 3 public static void main(String[] args) {
 4         JDateTime jDateTime=new JDateTime();
 5         
 6         Date date1=jDateTime.convertToDate();//当前时间
 7         System.out.println("CostCountForDayDaemon.main()"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SS").format(date1));
 8         
 9         jDateTime.setTime(0, 0, 0, 0);//将当前时间的时分秒毫秒置成零点零分零秒零毫秒
10         Date jDate=jDateTime.convertToDate();//将该时间转化成修改后的时间 
11         System.out.println("CostCountForDayDaemon.main()"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SS").format(jDate));
12         
13         jDateTime.subDay(1);//将当前时间往前减一天
14         Date date=jDateTime.convertToDate();
15         System.out.println("CostCountForDayDaemon.main()"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SS").format(date));
16     }
17 
18 
19 CostCountForDayDaemon.main()2015-03-17 14:54:41 887
20 CostCountForDayDaemon.main()2015-03-17 00:00:00 00
21 CostCountForDayDaemon.main()2015-03-16 00:00:00 00
View Code

 

  1. import java.util.TimeZone;   
  2.    
  3. import org.apache.log4j.Logger;   
  4. import org.junit.Test;   
  5.    
  6. import jodd.datetime.JDateTime;   
  7.    
  8. /** 
  9.  * JODD中的时间操作类  
  10.  * @author DJZHOU 
  11.  * 
  12.  */   
  13. public class JDateTimeUtil {   
  14.     private Logger log = Logger.getLogger(JDateTimeUtil.class) ;   
  15.     @Test   
  16.     public void testConstructor()   
  17.     {   
  18.         /* 
  19.          * 构造函数的使用 
  20.          */   
  21.         JDateTime jdt = new JDateTime();        // set current date and time   
  22.         jdt = new JDateTime(2012, 12, 21);      // set 21st December 2012, midnight   
  23.         jdt = new JDateTime(System.currentTimeMillis());   
  24.         jdt = new JDateTime(2012, 12, 21, 11, 54, 22, 124);  // set 21st December 2012, 11:54:22.124   
  25.         jdt = new JDateTime("2012-12-21 11:54:22.124");     // -//-   
  26.         jdt = new JDateTime("12/21/2012", "MM/DD/YYYY");    // set 21st December 2012, midnight   
  27.     }   
  28.        
  29.     @Test   
  30.     public void testSet()   
  31.     {   
  32.         JDateTime jdt = new JDateTime();        // set current date and time   
  33.         /* 
  34.          * set方法的使用:设定日期时间 
  35.          */   
  36.         jdt.set(2012, 12, 21, 11, 54, 22, 124);     // set 21st December 2012, 11:54:22.124   
  37.         jdt.set(2012, 12, 21);                      // set 21st December 2012, midnight   
  38.         jdt.setDate(2012, 12, 21);                  // change date to 21st December 2012, do not change te time   
  39.         jdt.setCurrentTime();                       // set current date and time   
  40.         jdt.setYear(1973);                          // change the year   
  41.         jdt.setHour(22);                            // change the hour   
  42.         jdt.setTime(18, 00, 12, 853);      
  43.     }   
  44.        
  45.     @Test   
  46.     public void testGet()   
  47.     {   
  48.         JDateTime jdt = new JDateTime();        // set current date and time   
  49.         /* 
  50.          * get方法的使用:读取日期和时间 
  51.          */   
  52.         jdt.getYear();   
  53.         jdt.getDateTimeStamp();   
  54.         log.warn(jdt.getDateTimeStamp());//获取当前时间   
  55.         log.warn(jdt.getJulianDate());   
  56.         log.warn(jdt.getDay()) ;   
  57.         log.warn(jdt.getDayOfMonth()) ;   
  58.         log.warn(jdt.getDayOfWeek()) ;   
  59.         log.warn(jdt.getDayOfYear()) ;   
  60.         log.warn(jdt.getEra()) ;   
  61.         log.warn(jdt.getFirstDayOfWeek()) ;   
  62.         log.warn(jdt.getFormat()) ;   
  63.     }   
  64.        
  65.     @Test   
  66.     public void testAdd()   
  67.     {   
  68.         JDateTime jdt = new JDateTime();        // set current date and time   
  69.         jdt.add(1, 2, 3, 4, 5, 6, 7);    // add 1 year, 2 months, 3 days, 4 hours...   
  70.         jdt.add(4, 2, 0);           // add 4 years and 2 months   
  71.         jdt.addMonth(-120);         // go back 120 months   
  72.         jdt.subYear(1);             // go back one year   
  73.         jdt.addHour(1234);          // add 1234 hours   
  74.     }   
  75.        
  76.     @Test   
  77.     public void testAdd2()   
  78.     {   
  79.         JDateTime jdt = new JDateTime() ;   
  80.         log.warn(jdt.toString("YYYY-MM-DD")) ;   
  81.         jdt.addDay(-20) ;   
  82.         log.warn(jdt.toString("YYYY-MM-DD")) ;   
  83.         jdt.addDay(10, true) ;   
  84.         log.warn(jdt.toString("YYYY-MM-DD")) ;   
  85.         jdt.addYear(1);   
  86.         log.warn(jdt.toString("YYYY-MM-DD")) ;   
  87.     }   
  88.        
  89.     @Test   
  90.     public void testFormat()   
  91.     {   
  92.         JDateTime jdt = new JDateTime();        // set current date and time   
  93.         /** 
  94.          * 转换说明 
  95.             YYYY    年 
  96.             MM      月 
  97.             DD      日 
  98.             D       一周中的第几天 从周一算起 
  99.             MML     月,长型 
  100.             MMS     月,短行 
  101.             DL      一周中的第几天 长型 从周一算起 
  102.             DS      一周中的第几天 短型 从周一算起 
  103.             hh      小时 
  104.             mm      分钟 
  105.             ss      秒 
  106.             mss     毫秒 
  107.             DDD     一年中的第几天 
  108.             WW      一年中的第几周 
  109.             WWW     一年中的第几周并用W标识 
  110.             W       一个月中的第几周 
  111.             E       年代,公元前还是公元后 
  112.             TZL     时间长型 
  113.             TZS     时间短型 
  114.          *  
  115.          */   
  116.         log.warn(jdt.convertToDate()) ;   
  117.         log.warn(jdt.toString("YYYY-MM-DD"));   
  118.            
  119.         log.warn(jdt.toString("YYYY-MM-DD hh:mm:ss"));//转换成字符串   
  120.         log.warn(jdt.toString("WW"));//本年度第几周   
  121.         log.warn(jdt.toString("YYYY")) ;   
  122.     }   
  123. }   


 


 

JODD操作properties文件

  1. import java.io.File;   
  2. import java.io.IOException;   
  3.    
  4. import org.apache.log4j.Logger;   
  5. import org.junit.Test;   
  6.    
  7. import jodd.props.Props;   
  8.    
  9. /** 
  10.  * JODD操作properties文件 
  11.  * @author DJZHOU 
  12.  * 
  13.  */   
  14. public class PropUtil {   
  15.     private static Logger log = Logger.getLogger(PropUtil.class) ;   
  16.     @Test   
  17.     public void propExam(){   
  18.         /* 
  19.          *  读取prop文件中的属性值  
  20.          */   
  21.         Props p = new Props();   
  22.         log.warn(URLUtil.getClassPath(this.getClass())+"/a.properties") ;   
  23.         try {   
  24.             p.load(new File(URLUtil.getClassPath(this.getClass())+"/a.properties"));   
  25.         } catch (IOException e) {   
  26.             e.printStackTrace();   
  27.         }   
  28.         String story = p.getValue("a");   
  29.         log.warn(p.getBaseValue("a")) ;   
  30.         log.warn(story);   
  31.         log.warn(null == p.getValue("a")) ;   
  32.         log.warn(p.toString()) ;   
  33.         p.setValue("c", "cc") ;   
  34.     }   
  35. }   


 


 

JODD操作email类

  1. import java.io.File;   
  2. import java.io.IOException;   
  3.    
  4. import org.junit.Test;   
  5.    
  6. import jodd.io.FileUtil;   
  7. import jodd.mail.Email;   
  8. import jodd.mail.EmailAttachment;   
  9. import jodd.mail.EmailMessage;   
  10. import jodd.mail.SendMailSession;   
  11. import jodd.mail.SmtpSslServer;   
  12. import jodd.mail.att.ByteArrayAttachment;   
  13. import jodd.mail.att.FileAttachment;   
  14. import jodd.util.MimeTypes;   
  15.    
  16. /** 
  17.  * JODD操作email类 
  18.  *  
  19.  * @author DJZHOU 
  20.  *  
  21.  */   
  22. public class EmailUtil   
  23. {   
  24.     public static void main(String[] args)   
  25.     {   
  26.         Email email = Email.create();   
  27.         email.addMessage(new EmailMessage("消息"));   
  28.         email.addText("邮件内容");   
  29.         email.embedFile(new File("d:/console.txt"));   
  30.         email.from("771842634@qq.com").to("771842634@qq.com");   
  31.         email.subject("主题");   
  32.         SendMailSession mailSession = new SmtpSslServer("smtp.qq.com//发送端邮箱服务器协议", "发送端QQ邮箱", "发送端QQ邮箱密码").createSession();   
  33.         mailSession.open();   
  34.         mailSession.sendMail(email);   
  35.         mailSession.close();   
  36.         System.out.println("发送成功!...");   
  37.     }   
  38.     @Test   
  39.     public void test() throws IOException   
  40.     {   
  41.         Email email = new Email();   
  42.             
  43.         email.setFrom("infoxxx@jodd.org");   
  44.         email.setTo("igorxxxx@gmail.com");   
  45.         email.setSubject("test7");   
  46.             
  47.         EmailMessage textMessage = new EmailMessage("Hello!", MimeTypes.MIME_TEXT_PLAIN);   
  48.         email.addMessage(textMessage);   
  49.             
  50.         EmailMessage htmlMessage = new EmailMessage(   
  51.             "<html><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">" +   
  52.             "<body><h1>Hey!</h1><img src='cid:c.png'><h2>Hay!</h2></body></html>",    
  53.         MimeTypes.MIME_TEXT_HTML);   
  54.         email.addMessage(htmlMessage);   
  55.             
  56.         EmailAttachment embeddedAttachment =   
  57.             new ByteArrayAttachment(FileUtil.readBytes("d:\\c.png"), "image/png", "c.png", "c.png");   
  58.         email.attach(embeddedAttachment);   
  59.             
  60.         EmailAttachment attachment = new FileAttachment(new File("d:\\b.jpg"), "b.jpg", "image/jpeg");   
  61.         email.attach(attachment);   
  62.     }   
  63. }   


 

String字符串的操作工具类

    1. import org.junit.Test;   
    2.    
    3. import jodd.util.StringUtil;   
    4.    
    5. /** 
    6.  * String字符串的操作工具类,太强大以至于我要发疯 
    7.  *  
    8.  * @author DJZHOU 
    9.  *  
    10.  */   
    11. public class StringExamUtil   
    12. {   
    13.     @Test   
    14.     public void stringExam()   
    15.     {   
    16.         String exam = "abcdefg10101010abcdefg";   
    17.         String result = "";   
    18.         /* 
    19.          * replace 字符替换 
    20.          */   
    21.         // 将字符串exam中的a替换成b   
    22.         result = StringUtil.replace(exam, "a", "b");   
    23.         // 将字符串exam中的a替换成8,b替换成9   
    24.         result = StringUtil.replace(exam, new String[] { "a", "b" }, new String[] { "8", "9" });   
    25.         // 将字符串exam中的a替换成b 这里是替换字符   
    26.         result = StringUtil.replaceChar(exam, 'a', 'b');   
    27.         // 将字符串exam中的a替换成8,b替换成9 这里是替换字符   
    28.         result = StringUtil.replaceChars(exam, new char[] { 'a', 'b' }, new char[] { '8', '9' });   
    29.         // 将字符串exam中的第一个a替换成b   
    30.         result = StringUtil.replaceFirst(exam, "a", "b");   
    31.         // 将字符串exam中的第一个a替换成b 这里是替换字符   
    32.         result = StringUtil.replaceFirst(exam, 'a', 'b');   
    33.         // 将字符串exam中的最后一个a替换成b   
    34.         result = StringUtil.replaceLast(exam, "a", "b");   
    35.         // 将字符串exam中的最后一个a替换成b 这里是替换字符   
    36.         result = StringUtil.replaceLast(exam, 'a', 'b');   
    37.         // 将字符串exam中的a和A替换成FF b和B替换成gg 即忽略大小写   
    38.         result = StringUtil.replaceIgnoreCase(exam, new String[] { "a", "b" }, new String[] { "FF", "gg" });   
    39.         /* 
    40.          * remove 字符移除 
    41.          */   
    42.         // 将字符串exam中的a移除   
    43.         result = StringUtil.remove(exam, "a");   
    44.         // 将字符串exam中的a移除 移除的是字符   
    45.         result = StringUtil.remove(exam, 'a');   
    46.         // 将字符串exam中的a b移除 移除的是字符 最后一个参数为无限参数   
    47.         result = StringUtil.removeChars(exam, 'a', 'b');   
    48.         // 将字符串exam中的a移除   
    49.         result = StringUtil.removeChars(exam, "a");   
    50.         /* 
    51.          * 判断字符串是否为空 
    52.          */   
    53.         // 判断字符串exam是否为空   
    54.         System.out.println(StringUtil.isEmpty(exam));   
    55.         // 判断字符串exam是否不为空   
    56.         System.out.println(StringUtil.isNotEmpty(exam));   
    57.         // 判断字符串exam是否为空 这里的空为去掉空格之后   
    58.         System.out.println(StringUtil.isBlank("   "));   
    59.         // 判断字符串exam是否不为空 这里的空为去掉空格之后   
    60.         System.out.println(StringUtil.isNotBlank("   "));   
    61.         // 判断字符串(无限参数)是否都为空 他们之间的关系为并且   
    62.         System.out.println(StringUtil.isAllEmpty(exam, "  ", "null"));   
    63.         // 判断字符串(无限参数)是否都为空 这里的空为去掉空格之后 他们之间的关系为并且   
    64.         System.out.println(StringUtil.isAllBlank(exam, "  ", "null"));   
    65.         // 对比字符串exam中的第4索引的字符是不是d   
    66.         System.out.println(StringUtil.isCharAtEqual(exam, 4, 'd'));   
    67.         // 对比字符串exam中的第4索引的字符是不是 不是d   
    68.         System.out.println(StringUtil.isCharAtEscaped(exam, 4, 'd'));   
    69.         /* 
    70.          * equals安全的字符串对比是否相等 不需要考虑null.equals等问题 
    71.          */   
    72.         // 判断字符串exam与aaa是否相等   
    73.         System.out.println(StringUtil.equals(exam, "aaa"));   
    74.         // 判断两个数组是否相等   
    75.         System.out.println(StringUtil.equals(new String[] { "aaa" }, new String[] { "aaa", "bbb" }));   
    76.         // 判断两个数组是否相等 且忽略大小写   
    77.         System.out.println(StringUtil.equalsIgnoreCase(new String[] { "aaa" }, new String[] { "aaa", "bbb" }));   
    78.         // 获取字符串bbb在数组中的索引   
    79.         System.out.println(StringUtil.equalsOne("bbb", new String[] { "aaa", "bbb" }));   
    80.         // 获取字符串bbb在数组中的索引 且忽略大小写   
    81.         System.out.println(StringUtil.equalsOneIgnoreCase("bbb", new String[] { "aaa", "bbb" }));   
    82.         /* 
    83.          * 首字母的更改 
    84.          */   
    85.         // 首字母大写   
    86.         result = StringUtil.capitalize(exam);   
    87.         // 首字母小写   
    88.         result = StringUtil.uncapitalize(exam);   
    89.         /* 
    90.          * split字符串分割 
    91.          */   
    92.         // 将字符串按 , 分割   
    93.         String[] array = StringUtil.split("1,2,3,4,5,6,7,8", ",");   
    94.         /* 
    95.          * indexOf 获取字符串中的字符索引 
    96.          */   
    97.         /* 
    98.          * Strips, crops, trims and cuts 
    99.          */   
    100.         // 若这个字符串以a为开头,则去掉a   
    101.         result = StringUtil.stripLeadingChar(exam, 'a');   
    102.         // 若这个字符串以g为结尾,则去掉g   
    103.         result = StringUtil.stripTrailingChar(exam, 'g');   
    104.         // 若该字符串为"" 则返回null 若不是则返回字符串   
    105.         result = StringUtil.crop("");   
    106.         // 裁剪数组 将""变成null   
    107.         StringUtil.cropAll(new String[] { "", " " });   
    108.         // 去掉字符串两边的空格   
    109.         result = StringUtil.trimDown("  aa  ");   
    110.         // 去掉字符串左边的空格   
    111.         result = StringUtil.trimLeft("  aa  ");   
    112.         // 去掉字符串右边的空格   
    113.         result = StringUtil.trimRight("  aa  ");   
    114.         // 去掉字符串右边的空格   
    115.         String[] array2 = new String[] { "  aa  ", "  b  b" };   
    116.         /* 
    117.          * 去掉数组内空格 
    118.          */   
    119.         StringUtil.trimAll(array2);   
    120.         StringUtil.trimDownAll(array2);   
    121.         for (String string : array2)   
    122.         {   
    123.             System.out.println(string);   
    124.         }   
    125.         /* 
    126.          * 切割字符串 
    127.          */   
    128.         // 从字符串的f字符开始切割字符串 保留f   
    129.         result = StringUtil.cutFromIndexOf(exam, 'f');   
    130.         // 从字符串的fg字符串开始切割字符串 保留fg   
    131.         result = StringUtil.cutFromIndexOf(exam, "fg");   
    132.         // 检查字符串是否为abc开头,若为此开头,则切割掉abc   
    133.         result = StringUtil.cutPrefix(exam, "abc");   
    134.         // 检查字符串是否为efg结尾,若为此结尾,则切割掉efg   
    135.         result = StringUtil.cutSuffix(exam, "efg");   
    136.         // 检查字符串是否为efg开头或结尾,若为此开头或结尾,则切割掉efg   
    137.         result = StringUtil.cutSurrounding(exam, "efg");   
    138.         // 检查字符串是否为abc开头efg结尾,若为为abc开头efg结尾,则切割掉   
    139.         result = StringUtil.cutSurrounding(exam, "abc", "efg");   
    140.         // 截取到字符串的f字符开始切割字符串 不保留f   
    141.         result = StringUtil.cutToIndexOf(exam, 'f');   
    142.         // 截取到字符串的fg字符串开始切割字符串 不保留fg   
    143.         result = StringUtil.cutToIndexOf(exam, "fg");   
    144.         /* 
    145.          * 其他很多小巧的方法,可以自行研究 
    146.          */   
    147.         System.out.println(result);   
    148.     }   
    149. }  
相关文章
|
3月前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
109 1
|
3月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
3月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
52 3
|
3月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
264 3
|
6天前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
28 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
4月前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
64 1
|
1月前
|
并行计算 算法 Java
Java中的Fork/Join框架详解
Fork/Join框架是Java并行计算的强大工具,尤其适用于需要将任务分解为子任务的场景。通过正确使用Fork/Join框架,可以显著提升应用程序的性能和响应速度。在实际应用中,应结合具体需求选择合适的任务拆分策略,以最大化并行计算的效率。
50 23
|
3月前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
109 38
|
3月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
395 12
基于开源框架Spring AI Alibaba快速构建Java应用

热门文章

最新文章