提供參數,時間,加密、驗證碼、郵件、跨域、隨機數、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