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. }  
相关文章
|
9天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
11天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
1月前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
40 6
|
28天前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
42 1
|
1月前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
38 3
|
1月前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
33 2
|
1月前
|
存储 算法 Java
Java Set因其“无重复”特性在集合框架中独树一帜
【10月更文挑战第14天】Java Set因其“无重复”特性在集合框架中独树一帜。本文深入解析Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定的数据结构(哈希表、红黑树)确保元素唯一性,并提供最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的`hashCode()`与`equals()`方法。
31 3
|
20天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
20天前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
28天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
43 1
Spring 框架:Java 开发者的春天
下一篇
无影云桌面