1. UUID Utils
本文链接:https://blog.csdn.net/pro_fan/article/details/89219385
2. UUID 是什么
转载 https://www.jianshu.com/p/da6dae36c290
3. UuidUtils
package cn.piesat.sar.utils;
import java.util.UUID;
public class UuidUtils {
public static String getUUID() {
return UUID.randomUUID().toString().replace("-", "");
}
}
4. 6个常用工具类的源码
转载 本文链接:https://blog.csdn.net/qq_38620956/article/details/103325876
[7.生成图片验证码CodeUtils] (https://blog.csdn.net/weixin_44403343/article/details/111841385)
1. Email
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
* 发邮件工具类
*/
public final class MailUtils {
private static final String USER = "1113606116@qq.com"; // 发件人称号,同邮箱地址
private static final String PASSWORD = "xxxxxxxxx"; // 如果是qq邮箱可以使户端授权码,或者登录密码
/**
* @param to 收件人邮箱
* @param text 邮件正文
* @param title 标题
*/
/* 发送验证信息的邮件 */
public static boolean sendMail(String to, String text, String title){
try {
final Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.qq.com");
// 发件人的账号
props.put("mail.user", USER);
//发件人的密码
props.put("mail.password", PASSWORD);
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用环境属性和授权信息,创建邮件会话
Session mailSession = Session.getInstance(props, authenticator);
// 创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
String username = props.getProperty("mail.user");
InternetAddress form = new InternetAddress(username);
message.setFrom(form);
// 设置收件人
InternetAddress toAddress = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置邮件标题
message.setSubject(title);
// 设置邮件的内容体
message.setContent(text, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
return true;
}catch (Exception e){
System.out.println("出错了");
}
return false;
}
// public static void main(String[] args) throws Exception { // 做测试用
// MailUtils.sendMail("wenyuechuan@163.com","你好,这是一封测试邮件,无需回复。","测试邮件");
// System.out.println("发送成功");
// }
}
2. 随机数字 验证码工具
/**
* 验证码
*/
@WebServlet("/checkCode")
public class CheckCodeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//服务器通知浏览器不要缓存
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
response.setHeader("expires","0");
//在内存中创建一个长80,宽30的图片,默认黑色背景
//参数一:长
//参数二:宽
//参数三:颜色
int width = 80;
int height = 30;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//获取画笔
Graphics g = image.getGraphics();
//设置画笔颜色为灰色
g.setColor(Color.GRAY);
//填充图片
g.fillRect(0,0, width,height);
//产生4个随机验证码,12Ey
String checkCode = getCheckCode();
//将验证码放入HttpSession中
request.getSession().setAttribute("CHECKCODE_SERVER",checkCode);
//设置画笔颜色为黄色
g.setColor(Color.YELLOW);
//设置字体的小大
g.setFont(new Font("黑体",Font.BOLD,24));
//向图片上写入验证码
g.drawString(checkCode,15,25);
//将内存中的图片输出到浏览器
//参数一:图片对象
//参数二:图片的格式,如PNG,JPG,GIF
//参数三:图片输出到哪里去
ImageIO.write(image,"PNG",response.getOutputStream());
}
/**
* 产生4位随机字符串
*/
private String getCheckCode() {
String base = "0123456789ABCDEFGabcdefg";
int size = base.length();
Random r = new Random();
StringBuffer sb = new StringBuffer();
for(int i=1;i<=4;i++){
//产生0到size-1的随机值
int index = r.nextInt(size);
//在base字符串中获取下标为index的字符
char c = base.charAt(index);
//将c放入到StringBuffer中去
sb.append(c);
}
return sb.toString();
}
3.cookieUtsil 操作cookie的基本工具
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
/**
* @param
* @return
*/
public class CookieUtil {
/***
* 获得cookie中的值,默认为主ip:www.book.com
* @param request
* @param cookieName
* @param isDecoder
* @return
*/
public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
Cookie[] cookies = request.getCookies();
if (cookies == null || cookieName == null){
return null;
}
String retValue = null;
try {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals(cookieName)) {
if (isDecoder) {//如果涉及中文
retValue = URLDecoder.decode(cookies[i].getValue(), "UTF-8");
} else {
retValue = cookies[i].getValue();
}
break;
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return retValue;
}
/***
* 设置cookie的值
* @param request
* @param response
* @param cookieName
* @param cookieValue
* @param cookieMaxage
* @param isEncode
*/
public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
try {
if (cookieValue == null) {
cookieValue = "";
} else if (isEncode) {
cookieValue = URLEncoder.encode(cookieValue, "utf-8");
}
Cookie cookie = new Cookie(cookieName, cookieValue);
if (cookieMaxage >= 0)
cookie.setMaxAge(cookieMaxage);
if (null != request)// 设置域名的cookie
cookie.setDomain(getDomainName(request));
// 在域名的根路径下保存
cookie.setPath("/");
response.addCookie(cookie);
} catch (Exception e) {
e.printStackTrace();
}
}
/***
* 获得cookie的主域名,本系统为book.com,保存时使用
* @param request
* @return
*/
private static final String getDomainName(HttpServletRequest request) {
String domainName = null;
String serverName = request.getRequestURL().toString();
if (serverName == null || serverName.equals("")) {
domainName = "";
} else {
serverName = serverName.toLowerCase();
//去掉前面http://
serverName = serverName.substring(7);
//的到第一个/的位置www.cart.com/123/3
final int end = serverName.indexOf("/");
//去掉后面没用的url路径 www.cart.com
serverName = serverName.substring(0, end);
//得到[www,cart,com]
final String[] domains = serverName.split("\\.");
int len = domains.length;
if (len > 3) {
// www.xxx.com.cn
domainName = domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
} else if (len <= 3 && len > 1) {
// xxx.com or xxx.cn
//取一级域名 //的到.com 或者.cn
domainName = domains[len - 2] + "." + domains[len - 1];
} else {
domainName = serverName;
}
}
if (domainName != null && domainName.indexOf(":") > 0) {
String[] ary = domainName.split("\\:");
domainName = ary[0];
}
System.out.println("domainName = " + domainName);
return domainName;
}
/***
* 将cookie中的内容按照key删除
* @param request
* @param response
* @param cookieName
*/
public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String cookieName) {
setCookie(request, response, cookieName, null, 0, false);
}
}
4.HttpclientUtil 发送Get Post请求
public class HttpclientUtil {
public static String doGet(String url) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建http GET请求
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = null;
try {
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
EntityUtils.consume(entity);
httpclient.close();
return result;
}
httpclient.close();
}catch (IOException e){
e.printStackTrace();
return null;
}
return null;
}
public static String doPost(String url, Map<String,String> paramMap) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建http Post请求
HttpPost httpPost = new HttpPost(url);
CloseableHttpResponse response = null;
try {
List<BasicNameValuePair> list=new ArrayList<>();
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
list.add(new BasicNameValuePair(entry.getKey(),entry.getValue())) ;
}
HttpEntity httpEntity=new UrlEncodedFormEntity(list,"utf-8");
httpPost.setEntity(httpEntity);
// 执行请求
response = httpclient.execute(httpPost);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
EntityUtils.consume(entity);
httpclient.close();
return result;
}
httpclient.close();
}catch (IOException e){
e.printStackTrace();
return null;
}
return null;
}
}
5. MD5Util
public class MD5Util {
/**
* The M d5.
*/
static MessageDigest MD5 = null;
/**
* The Constant HEX_DIGITS.
*/
private static final char HEX_DIGITS[] = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
static {
try {
MD5 = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException ne) {
ne.printStackTrace();
}
}
/**
* 获取文件md5值.
* @param file the file
* @return md5串
* @throws IOException
*/
public static String getFileMD5String(File file) throws IOException {
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[8192];
int length;
while ((length = fileInputStream.read(buffer)) != -1) {
MD5.update(buffer, 0, length);
}
return new String(encodeHex(MD5.digest()));
} catch (FileNotFoundException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
try {
if (fileInputStream != null)
fileInputStream.close();
} catch (IOException e) {
throw e;
}
}
}
/**
* 获取文件md5值.
*
* @param data the byte[] data
* @return md5串
* @throws IOException
*/
public static String getFileMD5String(byte[] data) throws IOException {
MD5.update(data);
return new String(encodeHex(MD5.digest()));
}
/**
* Encode hex.
*
* @param bytes the bytes
* @return the string
*/
public static String encodeHex(byte bytes[]) {
return bytesToHex(bytes, 0, bytes.length);
}
/**
* Bytes to hex.
*
* @param bytes the bytes
* @param start the start
* @param end the end
* @return the string
*/
public static String bytesToHex(byte bytes[], int start, int end) {
StringBuilder sb = new StringBuilder();
for (int i = start; i < start + end; i++) {
sb.append(byteToHex(bytes[i]));
}
return sb.toString();
}
/**
* Byte to hex.
*
* @param bt the bt
* @return the string
*/
public static String byteToHex(byte bt) {
return HEX_DIGITS[(bt & 0xf0) >> 4] + "" + HEX_DIGITS[bt & 0xf];
}
/**
* 获取md5值.
*
* @param str the string
* @return md5串
* @throws IOException
*/
public static String getStringMD5(String str) {
StringBuilder sb = new StringBuilder();
try {
byte[] data = str.getBytes("utf-8");
MessageDigest MD5 = MessageDigest.getInstance("MD5");
MD5.update(data);
data = MD5.digest();
for (int i = 0; i < data.length; i++) {
sb.append(HEX_DIGITS[(data[i] & 0xf0) >> 4] + "" + HEX_DIGITS[data[i] & 0xf]);
}
} catch (Exception e) {
}
return sb.toString();
}
/**
* The main method.
*
* @param args the arguments
*/
public static void main(String[] args) {
long beginTime = System.currentTimeMillis();
File fileZIP = new File("D:\\BaiduNetdiskDownload\\test1.avi");
String md5 = "";
try {
md5 = getFileMD5String(fileZIP);
} catch (IOException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("MD5:" + md5 + "\n time:" + ((endTime - beginTime)) + "ms");
System.out.println(getStringMD5("111111"));
}
}
6. HTTPClient
public class HttpclientUtil {
public static String doGet(String url) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建http GET请求
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = null;
try {
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
EntityUtils.consume(entity); //释放资源
httpclient.close();
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static String doPost(String url, Map<String, String> paramMap) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建http Post请求
HttpPost httpPost = new HttpPost(url);
CloseableHttpResponse response = null;
try {
if (paramMap != null) {
List<BasicNameValuePair> list = new ArrayList<>();
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
HttpEntity httpEntity = new UrlEncodedFormEntity(list, "utf-8");
httpPost.setEntity(httpEntity);
}
// 执行请求
response = httpclient.execute(httpPost);
// 判断返回状态是否为200
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
EntityUtils.consume(entity); //释放资源
httpclient.close();
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
7.生成图片验证码CodeUtils
本文链接:https://blog.csdn.net/weixin_44403343/article/details/111841385
package com.blb.util;
import com.blb.Constants;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
/**
* 用来生成验证码的工具
*/
public class CodeUtils {
private static int width = 90;// 定义图片的width
private static int height = 20;// 定义图片的height
private static int fontHeight = 18; // 定义的字体大小
private static int codeCount = 4;// 定义图片上显示验证码的个数
private static int codeX = 15;
private static int codeY = 16;
private static String [] codeArray = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
/**
* 生成验证码,并通过响应流将验证码数据发送出去
* @return 生成的验证码
* @throws IOException
*/
public static String generateCodeImage() throws IOException {
// 用程序(内存)在硬盘上创建图片
// 在内存中如何表示一个图片对象?
BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics gd = buffImg.getGraphics();
// 把画板里面的颜色调成白色,背景用颜料填充
gd.setColor(Color.WHITE);
gd.fillRect(0, 0, width, height);
// 画边框。
gd.setColor(Color.BLACK);
gd.drawRect(0, 0, width - 1, height - 1);
// 创建字体,字体的大小应该根据图片的高度来定。
Font font = new Font("Fixedsys", Font.BOLD, fontHeight);
// 设置字体。
gd.setFont(font);
// 创建一个随机数生成器类
Random random = new Random();
String code = "" ;
for(int i=0;i<codeCount;i++){
// 随机产生颜色 0 - 255
int red = random.nextInt(256);
int green = random.nextInt(256);
int blue = random.nextInt(256);
gd.setColor(new Color(red, green, blue));
// 随机产生字符
String singeCode = codeArray[random.nextInt(36)];
// 产生的字符拼接到一起
code+= singeCode;
// 画到画板上面
gd.drawString(singeCode, (i + 1) * codeX, codeY);
}
// 随机产生10条干扰线,使图象中的认证码不易被其它程序探测到。
gd.setColor(Color.BLACK);
for (int i = 0; i < 10; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
gd.drawLine(x, y, x + xl+1, y + yl+1);
}
File codeImage = new File(Constants.IMAGE_PATH+"code_img.png");
FileOutputStream fos = new FileOutputStream(codeImage);
ImageIO.write(buffImg, "jpg", fos);
// 设置响应类型
// response.setContentType("image/jpg");
// 获取到客户端的输出流
// ServletOutputStream out = response.getOutputStream();
// 将图片数据直接通过输出流写出去
// ImageIO.write(buffImg, "jpg", out);
return code ;
}
}