jsp java导入工具类_GitHub - Jsp9527/CommonUtil: 轻便简单的Java常用工具类库

目录

概述

本仓库是Java开发常用工具类的总结,旨在追求给大家提供一个轻便简单的工具类库,同时能够cover住大家80%以上的工具类的需求。如果对你有用欢迎点个star,此外,如果你有兴趣和我一起维护该仓库,欢迎提PR或者issue,让我们为拥有一个更强大的工具库而一同努力。

导入项目

io.github.ljwlgl

common-util

2.1.0

工具类介绍

FastJsonUtil(FastJson工具类)

借助FastJson实现序列化和反序列,同时自己实现了Json节点增删改,以及Json关键字段脱敏

toJsonString(Object object), 序列化Json

toJsonString(Object object, String... reAttrs),序列化Json转时删除不必要的属性

isJSON(String str),判断是否是Json串

eval(String json, String path), 从Json中根据Path取出对象

eval(String json, String path, Class clz), 根据path从json中取出结果并反序列成JavaBean

List evals(String json, String path, Class clz), 根据path从json中取出结果并反序列成JavaBean,该方法只支持array

remove(String json, String path),根据path删除指定属性

replace(String json, String path, Object value),根据path替换指定属性, 只支持JSONObject

replaceNew(String json, String path, String value),根据path替换指定属性, 支持JSONArray,但是不支持路径表达式

put(String json, String path, Object obj),根据path向json加入指定对象,只支持JSONObject

parseObject(String json, Class clazz),反序列化Json

List parseArray(String json, Class clazz),反序列化List

String getJsonValue(String jsonStr, String key),获取Json字符串某节点的值

containsKey(String jsonStr, String key),判断Json串是否包含某个节点

containsKey(String jsonStr, String... keys),判断Json串是否包含某些属性

String encryptJson(String json, List paths),加密json的节点属性,可以对关键字段脱敏,支持JsonArray

String encryptToJson(JSONObject preObject, String[] paths),同上

DateUtil(时间转换工具类)

在日常开发过程中,我们进程会需要把Date转成String,或者把String转成Date,该工具类大致上能满足我们日志开发需要:

getCurrentDate(),获取当期日志,只包含日期

calcIntervalDays(Date date1, Date date2),计算两个日期间隔的天数

dayOfWeek(Date date),返回data对应的是星期几

getTodayMinutes(),获取今天的分钟数,如今天18:05,则返回1805

getIntervalDate(Date time, int days),获取指定间隔天数的日期,比如昨天 getIntervalDate(new Date(), -1)

dateToShortDateString(Date date),将date转成String,输出String只包含年月日

dateToString(Date date), 将date转成String,输出String包含年月日时分秒

stringToDate(String dateStr),将String转成Date,默认时区东八区,TimeZone.getTimeZone("Asia/Shanghai")

dateToVoString(Date date) ,后端经常会根据传入Date生成View层的String传给前端,该方法计算成相应中文,会例如:

1分钟内:刚刚

超过1分钟并在1小时内:某分钟前 (1分钟前)

超过1小时并在当日内:某小时前(1小时前)

昨天:昨天 + 小时分钟(昨天 08:30)

昨天之前并在当年内:某月某日 + 小时分钟(1月1日 08:30)

隔年:某年某月某日 + 小时分钟(2017年1月1日 08:30)

CsvUtil(CSV文件工具类)

csv作为开发常常需要处理的文件格式,本项目主要提供以下工具方法:

List read(String filePath, String code, boolean needHeader),读取CSV文件,(参数说明,needHeader:是否需要列标题;)

List read(InputStream inputStream, Charset charset, boolean needHeader, int[] columns),读取CSV文件,(参数说明,needHeader:是否需要列标题;columns: 指定读取csv文件的哪几列,如果为null,则读取全部列)

List read(...),读取CSV文件的多个重载方法

write(List list, String filePath, boolean append),写入CSV文件(参数说明,append:是否以追加的方式写入)

RegexUtil(正则工具类)

isMobileExact(CharSequence input),是否是手机号

isEmail(CharSequence input),是否是email

isURL(CharSequence input),是否是URL

isIP(CharSequence input,是否是IP

isMatch(String regex, CharSequence input),是否匹配正则表达式

getMatches(String regex, CharSequence input),获取正则表达式的部分

...

LanguageUtil(语言工具类)

多语言场景工具类,可以借助下面工具类判断字符是哪种locale

isOnlyLetter(String str),是否只有字母

isLetter(String str),是否有字母和空格

isChinese(String str),是否只有汉字和空格

isLetterAndNumber(String str),是否只有字母、数字和空格

isChineseAndNumber(String str),是否只有汉字、数字和空格

isKoreanAndNumber(String str),是否只有韩语、数字和空格

isJapanAndNumber(String str),是否只有日文和数字

NetworkUtil(获取本地IP和主机名工具类)

拿到本机IP不是一件困难的事,但是拿到正确的就比较难了,本工具类,是参考了开源项目CAT内部的实现,提供静态方法如下:

getLocalHostAddress(),返回本机IP

getLocalHostName(),返回主机名

getLocalInetAddress,返回InetAddress

BigDecimalUtil(BigDecimal计算工具类)

在和钱打交道的服务里,经常会用到BigDecimal类,下面提供一些他的计算方法

subtract(double x, double y)

add(double x, double y)

multiply(double x, double y)

divide(double x, double y, int scale)

roundUp(double val),近似处理,向上取整

roundUp(double val, int scale), 近似处理,向上取整,scale保留点的位数

roundDown(double val)

roundDown(double val, int scale)

HttpUtil(http请求工具类)

在服务里请求别的接口也是很常见的事

doGet(String url, Map queryParam),get请求,queryParam是参数

doPost(String url, Map params, String json),json 请求体内是json字符串

... doPost的重载方法

CoordinateTransformUtil(坐标系转换工具类)

各坐标系相互转换,如bd09,wgs84,gcj02

convertLatLonByCoordinate(String newCoordinateType, String originalCoordinateType, double lat, double lon),将原本坐标系的经纬度转换成新的坐标系的经纬度,支持wgs84转bd09,bd09T转gcj02d等

EncodeDecodeUtil(编码与解码工具类)

encodeWithMD5(String str), 对字符串进行MD5加密

encodeWithSHA1(String str),对字符串进行SHA1加密

encodeWithSHA256(String str),对字符串进行SHA-256加密

encode(String algorithm, String str),通过指定算法对字符串加密

encodeBase64(String str),对字符串进行Base64编码

decodeBase64(String str),对字符串进行Base64解码

encodeUrl(String str),对URL编码

decodeUrl(String str),对URL解码

ProtobufUtil(提供Protobuf格式的序列化和反序列)

byte[] serialize(T obj),序列化对象

byte[] serializeList(List objList),序列化数组

T unSerialize(byte[] data,Class> clazz),反序列化对象

List unSerializeList(byte[] data, Class clazz),反序列化数组

DeepCopyUtil(深拷贝工具类)

Object depthClone(Object srcObj),单个对象的深拷贝,通过序列化与反序列的方式实现,所以srcObj对应的需实现java.io.Serializable接口

List listDepthClone(List list),多个对象的深拷贝,srcObj对应的需实现java.io.Serializable接口

GZIPUtil(通过Gzip算法压缩和解压)

compress(String str),字符串压缩为GZIP字节数组

compress(String str, String encoding),字符串压缩为GZIP字节数组

uncompress(byte[] bytes),GZIP解压缩

CaptchaUtil(验证码工具类)

String genCaptcha(int count),生成指定位数为count的随机验证码

BufferedImage genCaptchaImg(String captcha),为一个验证码生成一个图片

UrlParamsUtil(对URL参数处理的工具类)

String join(Map map, String separator),将Map转成String, 可以指定分隔符,通常用于拼接URL后面的参数

Map split(String paramsPath, String separator),解析ulr参数为map

Map split(String paramsPath),解析ulr参数为map,这里的separator参数为“=”

Map build(String ... keyValues),将keyValues转成Map

add(Map originMap, String ... keyValues),在原Map添加keyValues

EmailUtil(邮件发送工具类)

邮件工具类是通过JavaEmail实现,企业级项目一般都会专门的服务去发送邮件,但如果自己的小Demo,用工具类发送Email也未尝不可。示例Demo如下,有兴趣的可以fork代码自己研究一下,代码有详情的注释。

public class EmailUtilTest {

@Before

public void before() throws GeneralSecurityException {

// 发送邮箱配置,授权密码可以去邮件运营商获取

EmailUtil.config(EmailUtil.SMTP_QQ(false), "xxx@qq.com", "xxxxxx");

}

@Test

public void testSendText() throws MessagingException {

System.out.println("test");

}

}

关于开源

本项目是开源项目,若有摘取本项目的代码,请注明出处!(码字不易,请尊重开源精神)

Contributor

下面是笔者收集的一些对本仓库提过有价值的pr或者issue的朋友,如果你也对本仓库提过不错的pr或者issue的话,你可以发邮件(2715815264@qq.com)与我联系。

46100783e71c73b7129a3f03a0eb8fc8.png

1f37d6b156a8235dbcf08db9cf5c4e3d.png

7d4331031aab619e39df0fad053e2115.png

5b4275015a4203e66dc3649840851060.png

简单说明PR原则

注释需要完备,应该对新增的每个方法标注方法说明,同时对传入参数和返回参数也要相应的说明

充分的Unit Test,保证每行代码和分支都要覆盖到

更新日志

2018年08月

创建项目

2020年05月

新增LanguageUtil、EncodeDecodeUtil、CaptchaUtil

发布2.0.7、2.0.8、2.0.9版本

修复BigDecimalUtil错误的构造方法

补充一些method的注释

2020年06月

发布2.1.0版本

新增CsvUtil

补充单元测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值