提供参数,时间,加密、验证码、邮件、跨域、随机数、Id生成等开发中经常使用到的工具。。。html
<dependency> <groupId>cn.gjing</groupId> <artifactId>tools-common</artifactId> <version>1.2.6</version> </dependency>
方法参数校验,如若要排除方法中的某个参数,搭配使用@Exclude
注解到指定参数上;前端
方法参数校验, 可对null和空字符串进行校验,如若要排除方法中的某个参数,搭配使用@Exclude2
注解到指定参数上,若是须要自定义异常提示信息, 可设置message
java
若是是 Spring环境, 须要手动在xml文件中进行以下配置, SpringBoot环境无需配置
<bean id="xxx" class="cn.gjing.tools.common.handle.ToolsCommonNotEmptyAdapter"/>
开启全局跨域,在启动类或者任意类使用该注解便可,会走默认配置,也能够自行配置,配置示例以下:git
cors: # 支持的方法类型 allowed-methods: POST,GET,DELETE,PUT,OPTIONS # 支持的请求头 allowed-headers: xxx # 支持的域名 allowed-origins: xxx # 方法路径 path: /** max-age: 1800
/** * @author Gjing **/ @Configuration public class CorsConfiguration { @Bean public CommonCors cors() { return CommonCors.builder() .allowCredentials(Boolean.TRUE) .maxAge(1800L) .path("/**") .build(); } }
通用返回结果模板github
参数 | 描述 |
---|---|
code | 状态码 |
message | 提示信息 |
data | 数据 |
分页查询返回结果集跨域
参数 | 描述 |
---|---|
totalPages | 总页数 |
CurrentPage | 当前页数 |
totalRows | 总条数 |
pageRows | 每页的条数 |
data | 数据 |
错误返回模板数组
参数 | 描述 |
---|---|
code | 状态码 |
message | 提示信息 |
主要提供参数校验、处理,匹配等等, 使用时经过ParamUtils.xxx()
使用,如下为该工具的全部方法介绍 :缓存
判断给定参数是否为空,能够是字符串、包装类型、数组、集合等服务器
参数 | 描述 |
---|---|
str | 参数 |
判断给定是否不为空,能够是字符串、包装类型、数组、集合等并发
参数 | 描述 |
---|---|
str | 参数 |
该参数不能为空,为空抛出NPE,不然返回原值
参数 | 描述 |
---|---|
str | 参数 |
判断集合里是否含有空值
参数 | 描述 |
---|---|
list | 集合 |
检查多个参数里面是否有空值
参数 | 描述 |
---|---|
params | 多个参数 |
判断两个参数是否相等
参数 | 描述 |
---|---|
t | 参数1 |
u | 参数2 |
去除字符串的空格
参数 | 描述 |
---|---|
str | 字符串 |
去除集合中的空元素
参数 | 描述 |
---|---|
list | 集合 |
移除字符串两边的指定符号
参数 | 描述 |
---|---|
str | 字符串 |
symbol | 符号 |
移除字符串开始的指定符号
参数 | 描述 |
---|---|
str | 字符串 |
symbol | 符号 |
移除字符串末尾的指定符号
参数 | 描述 |
---|---|
str | 字符串 |
symbol | 符号 |
根据符号截取
参数 | 描述 |
---|---|
str | 字符串 |
symbol | 符号 |
移除字符串里的全部指定符号
参数 | 描述 |
---|---|
str | 字符串 |
symbol | 符号 |
判断数组里是否包含指定的值
参数 | 描述 |
---|---|
arr | 数组 |
val | 值 |
判断是否为email
参数 | 描述 |
---|---|
字符串 |
判断是不是手机号码
参数 | 描述 |
---|---|
phone | 字符串 |
判断是否是电话号码
参数 | 描述 |
---|---|
tel | 字符串 |
判断是否为邮编
参数 | 描述 |
---|---|
postCode | 字符串 |
对时间进行操做,使用时经过TimeUtils.xxx()
调用,该工具的全部方法介绍以下 :
获取文本格式时间
参数 | 描述 |
---|---|
date | Date对象 |
date转localDateTime
参数 | 描述 |
---|---|
date | Date对象 |
date转localDate
参数 | 描述 |
---|---|
date | Date对象 |
localDate转Date
参数 | 描述 |
---|---|
localDate | LocalDate对象 |
LocalDate转指定格式字符串
参数 | 描述 |
---|---|
localDate | LocalDate对象 |
LocalDateTime转指定格式字符串
参数 | 描述 |
---|---|
localDateTime | LocalDateTime对象 |
LocalTime转指定格式字符串
参数 | 描述 |
---|---|
localTime | LocalTime对象 |
字符串日期转指定格式
参数 | 描述 |
---|---|
time | 字符串日期 |
字符串日期转指定格式
参数 | 描述 |
---|---|
time | 字符串日期 |
LocalDateTime转Date
参数 | 描述 |
---|---|
dateTime | LocalDateTime对象 |
localDateTime转时间戳
参数 | 描述 |
---|---|
dateTime | LocalDateTime对象 |
时间戳转LocalDateTime
参数 | 描述 |
---|---|
stamp | 时间戳 |
查询一个日期(年月日格式)到目前过了多少年
参数 | 描述 |
---|---|
startTime | 开始的时间(字符串) |
Date转字符串
参数 | 描述 |
---|---|
date | Date对象 |
format | 格式,如:yyyy-MM-dd |
字符串转Date
参数 | 描述 |
---|---|
date | 时间字符串 |
字符串日期转指定格式Date
参数 | 描述 |
---|---|
date | 时间字符串 |
format | 格式,如:yyyy-MM-dd |
字符串时间转日期
参数 | 描述 |
---|---|
str | 字符串时间 |
日期转Date
参数 | 描述 |
---|---|
calendar | 日期 |
format | 格式,如:yyyy-MM-dd |
日期转字符串
参数 | 描述 |
---|---|
calendar | 日期 |
format | 格式,如:yyyy-MM-dd |
获取某个时间所在月份的天数
参数 | 描述 |
---|---|
date | 时间对象 |
获取时间的天数,如2017-12-13,返回13
参数 | 描述 |
---|---|
date | 时间对象 |
获取时间所在的年份
参数 | 描述 |
---|---|
date | 时间对象 |
获取时间所在月份
参数 | 描述 |
---|---|
date | 时间对象 |
增长月份
参数 | 描述 |
---|---|
date | 时间对象 |
n | 月数 |
增长天数
参数 | 描述 |
---|---|
date | 时间对象 |
n | 天数 |
字符串日期转时间戳
参数 | 描述 |
---|---|
stringDate | 字符串时间 |
时间戳转字符串时间
参数 | 描述 |
---|---|
timeStamp | 时间戳 |
计算两个日期相差的天数(不包括今天)
参数 | 描述 |
---|---|
startDate | 开始时间 |
endDate | 结束时间 |
计算两个日期相差的天数(包括今天)
参数 | 描述 |
---|---|
startDate | 开始时间 |
endDate | 结束时间 |
主要用于数据加密, 该工具包含的全部方法以下:
MD5加密
参数 | 描述 |
---|---|
body | 要加密的内容 |
Base64加密
参数 | 描述 |
---|---|
content | 要加密的内容 |
Base64解密
参数 | 描述 |
---|---|
content | 要加密的内容 |
sha566 hmac加密
参数 | 描述 |
---|---|
str | 要加密的内容 |
secret | 密钥 |
sha1Hmac加密
参数 | 描述 |
---|---|
str | 要加密的内容 |
secret | 密钥 |
AES加密
参数 | 描述 |
---|---|
content | 要加密的内容 |
password | 加密须要的密码 |
AES解密
参数 | 描述 |
---|---|
content | 要加密的内容 |
password | 加密须要的密码 |
用于随机生成数字或字符串,使用时经过RandomUtils.xxx()
调用,该工具包含的全部方法以下 :
获取随机整数,可设置最大值和最小值
参数 | 描述 |
---|---|
min | 最小值 |
max | 最大值 |
获取一个Random实例
生成混合指定长度字符串(数字、字母大小写)
参数 | 描述 |
---|---|
length | 生成的字符串长度 |
获取指定长度纯字符串(字母大小写)
参数 | 描述 |
---|---|
length | 生成的字符串长度 |
获取指定长度数字字符串
参数 | 描述 |
---|---|
length | 生成的字符串长度 |
使用时经过BeanUtils.xxx()
调用
属性复制,用于将一个对象的属性赋值到另外一个对象,两个对象间的参数名和数据类型必须相同
参数说明
参数 | 描述 |
---|---|
source | 源对象 |
target | 目标对象 |
ignores | 忽略的字段,设置后不会进行复制 |
将map转为bean对象
参数说明
参数 | 描述 |
---|---|
map | 须要转为Bean的map |
beanClass | 目标Bean的class |
查找类中的方法
参数说明
参数 | 描述 |
---|---|
clazz | 目标类class |
methodName | 方法名 |
paramTypes | 方法参数类型 |
查找类中声明的方法
参数说明
参数 | 描述 |
---|---|
clazz | 目标类class |
methodName | 方法名 |
paramTypes | 方法参数类型 |
给类中的某个字段设置值
参数说明
参数 | 描述 |
---|---|
o | 字段所在的对象 |
field | 字段 |
value | 值 |
获取某个字段的值
参数说明
参数 | 描述 |
---|---|
o | 字段所在的对象 |
field | 字段 |
将bean对象转为map
参数说明
参数 | 描述 |
---|---|
bean | 须要转为map的bean对象 |
获取泛型接口中某个泛型的真实对象类型
参数说明
参数 | 描述 |
---|---|
source | 实现泛型接口的类 |
typeInterface | 泛型接口 |
paramIndex | 泛型参数下标,0开始 |
用于生成英文和数字混合的验证码,使用时经过构造AuthCodeUtils
在进行调用其中的方法,构造时参数以下 :
参数 | 描述 |
---|---|
width | 验证码图片宽度 |
height | 验证码图片高度 |
codeCount | 验证码字符个数 |
lineCount | 验证码干扰线数 |
该工具下的全部方法以下:
生成验证码到本地,案例以下
public class Test{ public static void main(String[] args) { AuthCodeUtil authCodeUtil = new AuthCodeUtil(160,40,5,150); try { String path="/文件夹路径/code.png"; //写入到本地时能够经过getCode()方法获取生成的验证码 String code = authCodeUtil.writeToLocal(path).getCode(); System.out.println(code); } catch (IOException e) { e.printStackTrace(); } } }
获取生成的验证码字符
public class Test{ public static void main(String[] args){ String code = authCodeUtil.writeToLocal(xxx).getCode; System.out.println(code); } }
以流的方式返回给前端,案例以下
public class Test{ @GetMapping("/code") public void getCode(HttpServletResponse response, HttpServletRequest request) throws IOException { AuthCodeUtil authCodeUtil = new AuthCodeUtil(100, 50, 4, 50); response.setContentType("image/jpeg"); //禁止图像缓存 response.setHeader("param", "no-cache"); response.setDateHeader("Expires", 0); authCodeUtil.write(response.getOutputStream()); } }
**项目中使用能够将IdUtils
注册为一个bean以在其余地方进行依赖注入, 或者将其设置为静态的
, 不要出现重复的IdUtils
对象, 不然并发状况下会出现重复,
若是要调用snowId
, 必须经过带参数的构造方法进行建立实例**
获取去除-
符号的uuid
public class Test{ public static void main(String[] args){ IdUtils idUtils = new IdUtils(); System.out.println(idUtils.uuid()); } }
获得一个惟一的ID,在多服务须要操做同一个数据表的状况下, 须要保证每一个服务的centerId
和machineId
惟一
public class Test{ public static void main(String[] args){ IdUtils idUtils = new IdUtils(1,2); for(int i = 0; i < 100; i++) { System.out.println(idUtils.snowId()); } } }
对文件的一些操做,包含的全部方法以下 :
从远程URL地址下载文件到本地
参数说明
参数 | 描述 |
---|---|
fileUrl | 要下载的文件URL地址 |
fileName | 保存到本地的文件名, 须要加后缀 |
savePath | 保存到本地的目录 |
将本地的指定地址文件经过流下载
参数说明
参数 | 描述 |
---|---|
response | HttpServletResponse |
file | 文件对象 |
将文件转为byte数组
参数说明
参数 | 描述 |
---|---|
file | 文件 |
将字节数组写入到指定文件, 写入成功返回true
参数说明
参数 | 描述 |
---|---|
bytes | byte数组 |
file | 文件对象 |
从输入流读取内容并返回字节数组
参数说明
参数 | 描述 |
---|---|
InputStream | 输入流 |
获取文件扩展名
参数说明
参数 | 描述 |
---|---|
fileName | 文件名 |
用于发送邮件,支持普通邮件和带附件邮件,支持html格式文本,支持群发和抄送,返回true为发送成功,使用时经过EmailUtils.of()
生成实例以后在进行其中的方法,of()
方法参数以下 :
参数 | 描述 |
---|---|
host | smtp服务器地址,好比qq邮箱:smtp.qq.com |
password | 发送者邮箱密码,有些邮箱须要用受权码代替密码 |
from | 发送人邮箱 |
该工具包含的全部方法以下 :
发送邮件,参数以下:
参数 | 描述 |
---|---|
subject | 主题 |
body | 邮件内容,支持HTML |
files | 要发送的附件物理地址,不要能够传null或者空数组 |
tos | 收件人邮箱帐号,多个使用逗号隔开 |
copyTo | 抄送人地址,多个用逗号隔开,不抄送能够传null或者空字符串 |
完整示例以下 :
public class Test{ public static void main(String[] args) { boolean b = EmailUtils.of("smtp.qq.com", "发送人密码或者受权码", "发送人邮箱") .sendEmail("主题", "内容",new String[]{"附件物理地址"},"收件人邮箱地址", "抄送人邮箱地址"); if (b) { System.out.println("发送成功"); } } }
工具源码地址:tools-common