常用的工具类代码

目录

激活码生成工具
数据连接池
发送邮件
Md5加密简单版
Md5加密完全版
文本字符串判断工具
Base64加密工具
事务处理连接池
生成令牌工具
使用移除令牌工具
上传文件工具
数字验证码
普通验证码
cookie删除和添加工具
json工具类
异常处理器
解锁定时器任务工具类
文件上传拦截器
EXCEL工具
ES分页工具

激活码生产工具
public class RandomUtils {
   
    //当前时间 + 随机数
    public static String createActive(){
   
        return getTime()+Integer.toHexString(new Random().nextInt(900)+100);
    }
    private static String getTime(){
   
        return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime());
    }
    //生成订单编号
    public static String createOrderId(){
   
        return getTime();
    }
}

目录

数据连接池
public class DruidUtils {
   
    private static DruidDataSource dataSource;

    static {
   
        Properties properties = new Properties();
        InputStream is = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
        try {
   
            properties.load(is);
            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
   
            e.printStackTrace();
            throw new RuntimeException("初始化连接池失败", e);
        }
    }

    public static DataSource getDataSource() {
   
        return dataSource;
    }
}

目录

发送邮件工具
public class EmailUtils {
   
    public static void sendEmail(User user){
   
        //发送方
        String myAccount = "renjie9283@163.com";
        //授权码,需要到自己邮箱去生成
        String myPass = "cq1701";
        //发件人 邮箱的 SMTP 服务器地址,如果是qq邮箱则改成smtp.qq.com
        String SMTPHost = "smtp.163.com";
        //组成 properties
        Properties prop = new Properties();
        prop.setProperty("mail.transport.protocol", "smtp");//设置协议类型
        prop.setProperty("mail.smtp.host", SMTPHost);//定义发件人的邮箱服务器地址
        prop.setProperty("mail.smtp.auth", "true");//设置请求验证
        //1.Session对象 创建会话 用于和邮箱服务器进行交互
        Session session = Session.getDefaultInstance(prop);
        //设置debug模式 可以查看详细发送信息 可略
        session.setDebug(true);

        //2.创建方法 用来组成一封完整的邮件
        //参数 session(参数配置), myAccount 发送方 , user.getEmail() 接收方
        MimeMessage message = createMsg(session,myAccount,user);
        //4.利用Transport 发送邮件
        try {
   
            Transport tran = session.getTransport();
            //连接服务器 确认发送方 是否授权
            tran.connect(myAccount, myPass);
            //发送邮件 将message 对象 传给 Transport 对象 将邮件发送出去
            //参数1 要发的内容 参数2 要给哪些人发
            //message.getAllRecipients() 获取到所有的收件人 | 抄送 | 密送
            tran.sendMessage(message, message.getAllRecipients());
            //关闭连接
            tran.close();
        } catch (MessagingException e) {
   
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static MimeMessage createMsg(Session session, String myAccount, User user) {
   
        //使用session对象 获取待发送的邮件信息
        MimeMessage message = new MimeMessage(session);
        //3.设置发件人 收件人 标题 邮件内容 附件 发送时间等等
        try {
   
            //3.1发件人 from
            message.setFrom(new InternetAddress(myAccount, "小米", "utf-8"));
            //3.2收件人 to 支持可以添加多个收件人 | 抄送 | 密送 如果想要发送给多个人 可以重复下面代码多次
            /*
             * MimeMessage.RecipientType.TO 发送
             * MimeMessage.RecipientType.CC 抄送
             * MimeMessage.RecipientType.BCC 密送
             * */
            message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(user.getEmail(), user.getUsername(), "utf-8"));
            //3.3生成邮件主题
            message.setSubject("小米商城账号激活邮件","utf-8");
            String ip = Inet4Address.getLocalHost().getHostAddress();
            String url = "http://"+ip+":8080/myxiaomi/activate?e="+ Base64Utils.encode(user.getEmail())+"&c="+Base64Utils.encode(user.getCode());
            //设置邮件正文 setContent 可以使用html标签
            message.setContent(user.getUsername()+",你好<br>欢迎注册小米商城! 请点击链接进行激活:<a href='"+url+"'>"+url+"</a>","text/html;charset=utf-8");
            //设置邮件的发送时间 是立即发送
            message.setSentDate(new Date());
            //保存设置
            message.saveChanges();
        } catch (UnsupportedEncodingException | MessagingException | UnknownHostException e) {
   
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return message;
    }
}

目录

MD5加密简单版
public class MD5Utils {
   
    public static String md5(String str) {
   
        try {
   
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.update(str.getBytes("utf-8"));
            byte[] digest = messageDigest.digest();
            //1表示正数
            BigInteger bigInteger = new BigInteger(1, digest);
            return bigInteger.toString(16);
        } catch (Exception e) {
   
            e.printStackTrace();
        }
        return null;
    }
}

目录

MD5加密完全版
public class Md5Util {
   
    public static final String SIGN_KEY = "sign_key";//签名key

    public static final String PARAMETER_KEY = "parameter_key";//拼装的参数key

    /**
     * 新的md5签名,首尾放secret。
     *
     * @param key 商家key
     *            tradeNo  流水号
     *            secret
     * @param key 分配给您的APP_SECRET
     */
    public static String md5Signature(long id, String tradeNo,
                                      String key) {
   

        StringBuffer sb = new StringBuffer();
        sb.append(key);
        sb.append(id);
        sb.append(tradeNo);
        sb.append(key);

        MessageDigest md = null;
        try {
   
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
   
            e.printStackTrace();
        }
        String result = null;
        try {
   
            result = byte2hex(md.digest(sb.toString().getBytes("utf-8")));
        } catch (UnsupportedEncodingException e) {
   
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 二行制转字符串
     */
    private static String byte2hex(byte[] b) {
   
        StringBuffer hs = new StringBuffer();
        String stmp = "";
        for (int n = 0; n < b.length; n++) {
   
            stmp = (Integer.toHexString(b[n] & 0XFF));
            if (stmp.length() == 1)
                hs.append("0").append(stmp);
            else
                hs.append(stmp);
        }
        return hs.toString().toUpperCase();
    }

    /***
     * 对请求的参数排序,生成定长的签名
     * @param  paramsMap  排序后的字符串
     * @param secret 密钥
     * */
    public static String md5Signature(Map<String, String> paramsMap, String secret) {
   
        Map<String, String> resultMap = new HashMap<String, String>();//用于记录返回的签名和将参数按照签名拼装的url
        String result = "";
        StringBuilder sb = new StringBuilder();
        Map<String, String> treeMap = new TreeMap<String, String>();
        treeMap.putAll(paramsMap);
        sb.append(secret);
        Iterator<String> iterator = treeMap.keySet().iterator();
        while (iterator.hasNext()) {
   
            String name = (String) iterator.next();
            sb.append(name).append(treeMap.get(name));
        }
        sb.append(secret);
        resultMap.put(PARAMETER_KEY, sb.toString());
        try {
   
            MessageDigest md = MessageDigest.getInstance("MD5");             /**MD5加密,输出一个定长信息摘要*/
            result = byte2hex(md.digest(sb.toString().getBytes("utf-8")));

        } catch (Exception e) {
   
            throw new RuntimeException("sign error !");
        }
        resultMap.put(SIGN_KEY, result);
        return result;
    }

    /**
     * Calculates the MD5 digest and returns the value as a 16 element
     * <code>byte[]</code>.
     *
     * @param data Data to digest
     * @return MD5 digest
     */
    public static byte[] md5(String data) {
   
        return md5(data.getBytes());
    }

    /**
     * Calculates the MD5 digest and returns the value as a 16 element
     * <code>byte[]</code>.
     *
     * @param data Data to digest
     * @return MD5 digest
     */
    public static byte[] md5(byte[] data) {
   
        return getDigest().digest(data);
    }

    /**
     * Returns a MessageDigest for the given <code>algorithm</code>.
     *
     * @param
     * @return An MD5 digest instance.
     * @throws RuntimeException when a {@link NoSuchAlgorithmException} is
     *                          caught
     */

    static MessageDigest getDigest() {
   
        try {
   
            return MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
   
            throw new RuntimeException(e);
        }
    }
}

目录

文本字符串判断工具
public class StringUtils {
   
    public static boolean isEmpty(String str) {
   
        if (str == null || str.trim().length() == 0) {
   
            return true;
        } else {
   
            return false;
        }
    }
}

目录

Base64加密工具
public class Base64Utils {
   
    //base64编码
    public static String encode(String msg){
   
        return Base64.getEncoder().encodeToString(msg.getBytes());
    }
    //base64解码
    public static String decode(String msg){
   
        return new String(Base64.getDecoder().decode(msg)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值