小编技术能力有限,所写博客只是作为加强自身经验总结,各位大佬有任何意见都可以提出,以便加强学习
在我们工作实战项目中,时常会有各种小的需求或者各种根据实际情况所需要的的条件判定、工具运用等,本篇就是个人总结如下实际开发中会用到的各种常用工具包。
一、Apache commons
Apache commons包封装了很多实际开发过程中需要运用的技术,减轻重复代码开发,大大提升效率,
组件 |
功能介绍 |
BeanUtils | 提供了对于JavaBean进行各种操作,克隆对象,属性等等. |
Betwixt | XML与Java对象之间相互转换. |
Codec | 处理常用的编码方法的工具类包 例如DES、SHA1、MD5、Base64等. |
Collections | java集合框架操作. |
Compress | java提供文件打包 压缩类库. |
Configuration | 一个java应用程序的配置管理类库. |
DBCP | 提供数据库连接池服务. |
DbUtils | 提供对jdbc 的操作封装来简化数据查询和记录读取操作. |
java发送邮件 对javamail的封装. | |
FileUpload | 提供文件上传功能. |
HttpClien | 提供HTTP客户端与服务器的各种通讯操作. 现在已改成HttpComponents |
IO | io工具的封装. |
Lang | Java基本对象方法的工具类包 如:StringUtils,ArrayUtils等等. |
Logging | 提供的是一个Java 的日志接口. |
Validator | 提供了客户端和服务器端的数据验证框架. |
这里着重说下常用的Lang 、Collections、FileUpload、HttpClient、IO
(1) Lang
ArrayUtils
StringUtils
1.isEmpty() ,isNotEmpty(),isBlank,isNoBlank 都是判定字符串是否为空或不为空, 区别在于isBlank会多判断是否空空白符
2.join() 将数组转换为按指定符号拆分的字符串
3.replace() 替换指字符串
4.split() 按指定字符拆分返回数组
5.trim() 去除首尾空白 deleteWhitespace()去除所有空白
6.substring() 截取字符串
(2)Collections 在常用集合判断是否为空中 会经常用到Collections.isEmpty()或Collections.isNotEmpty()判定集合是否为空或不为空
(3)FileUpload 非常好的提供了java web中上传文件功能封装,所以在做上传文件需求时可以考虑使用
(4)HttpClient 提供了http客户端和服务器的操作,在不同模块中开发需要调用其它模块接口时则可以时用该工具类,它很好地提供了http请求和响应支持
(5)IOUtils基本上算是优化IO传输时所写的一大堆代码了,有了它,对于即便时不怎么了解IO的同学也能运用它很好地作IO操作以及优化IO代码,常用的如
copy() IO流数据复制,从输入流写到输出流中,最大支持2GB
read() 读取输入流
write() 把字节. 字符等写入输出流
closeQuietly():关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块
(二)、java8 新增对时间处理 java.time
LocalDate localDate = LocalDate.now();
System.out.println(localDate); //2017-06-26
System.out.println(localDate.getYear()); //2017,年
System.out.println(localDate.getMonthValue()); //6,月
System.out.println(localDate.getDayOfMonth()); //26,日
System.out.println(localDate.getDayOfWeek()); //MONDAY,星期几
System.out.println(localDate.lengthOfMonth()); //30,返回当前月份的长度
System.out.println(localDate.isLeapYear());//false,是否是闰年
System.out.println("------------------");
LocalDate localDate2 = LocalDate.of(2017,4,1);
System.out.println(localDate2); //2017-04-01
//关注与时分秒
LocalTime time = LocalTime.now();
System.out.println(time); //22:30:01.512
System.out.println(time.getHour()); //22,时
System.out.println(time.getMinute()); //30,分
System.out.println(time.getSecond()); //01,秒
LocalTime time2 = time.plusHours(3).plusMinutes(40);
System.out.println(time2); //02:10:01.512
LocalDateTime dt1 = LocalDateTime.of(2017, Month.APRIL,18,13,45,20);
System.out.println(dt1);
LocalDate date1 = dt1.toLocalDate(); //通过LocalDateTime获得LocalDate
LocalTime time1 = dt1.toLocalTime(); //通过LocalDateTime获得LocalTime
System.out.println("date1======="+date1+"time1===="+time1);
LocalDate date = LocalDate.of(2014,02,26);
LocalTime time = LocalTime.of(12,23,20);
LocalDateTime dt2 = LocalDateTime.of(date,time);
System.out.println(dt2);
//LocalDate结合LocalTime成一个LocalDateTime
LocalDateTime dt3 = date.atTime(13,45,20);
System.out.println(dt3); //2014-02-26T13:45:20
//LocalDate结合LocalTime成一个LocalDateTime
LocalDateTime dt4 = date.atTime(time);
System.out.println(dt4); //2014-02-26T12:23:20
//LocalTime结合LocalDate成LocalDateTime
LocalDateTime dt5 = time.atDate(date);
System.out.println(dt5); //2014-02-26T12:23:20
LocalTime time1 = LocalTime.of(18,23,45);
LocalTime time2 = LocalTime.of(23,34,56);
Duration d1 = Duration.between(time1,time2);
System.out.println(d1.getSeconds()); //18671
//LocalDate localDate1 = LocalDate.now();
LocalDate localDate1 = LocalDate.of(2017,4,12);
LocalDate localDate2 = LocalDate.of(2018,3,16);
Period period = Period.between(localDate1,localDate2);
System.out.println(period.getYears()); //获取相隔的年份差 0
System.out.println(period.getMonths()); //获取相隔的月份差 11
System.out.println(period.getDays()); //获取相隔的日子差 4
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);//2017-04-12T22:05:22.500
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime,zoneId);
System.out.println(zonedDateTime); //2017-04-12T22:05:22.500+08:00[Asia/Shanghai]
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatdate = localDateTime.format(formatter);
System.out.println(formatdate);
System.out.println("...........");
LocalDate localDate = LocalDate.of(2017,3,17);
//BASIC_ISO_DATE格式,20111203
String str = localDate.format(DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(str);
//DateTimeFormatter.ISO_LOCAL_DATE 格式 2017-03-17
String str2 = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(str2);
//定义
String str3 = localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(str3);
LocalDate localDate1 = LocalDate.parse("20111203",DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(localDate1); //2011-12-03
LocalDate localDate2 = LocalDate.parse("2017-03-17",DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(localDate2); //2017-03-17
(三)、常用json转换工具————fastjson
fastjson 中的jsonObject和jsonArray就不说了
主要说说 1.JSON.parseObject
//json字符串转换为java对象
Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference() {});
//Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference() {});//因为JSONObject继承了JSON,所以这样也是可以的
//json字符串转换为json对象
JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
2.JSON.toJSON() 将java对象转换为jsonObject 对象
3.JSON.toJSONString() 将java对象转换为json字符串
除此之外还有google 的 Gson()对json转换做了很好的封装
(四)、常用的导出工具
1、IText ————很好地封装了对pdf导出的封装,提供了对导出pdf文件的功能处理
2、Apache POI ———— 提供了导出为 excel文件功能处理
3、 也可以直接用java导出csv文件
(五)、java中常用正则表达式
// 身份证验证
// 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)
String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +
"(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";
//手机号码验证
String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,1,2,5-9])|(177))\\d{8}$";
//邮箱正则表达式
String repx = "\\w+@([\\w]+[\\w-]*)(\\.[\\w]+[-\\w]*)+";