java手写的一些常用的工具类(DButils,日期工具类,MD5加密工具类) 2021-06-24 13:58 354阅读 0赞 ### java常用的一些工具类 ### * * 日期工具类 * MD5加密工具类 * DBUtils工具类 * 对事务封装的DButis * DaoUtils * * RowMapper 接口 * PersonRowMapper 实现类 * Druid DButils * 生成验证码 ## 日期工具类 ## Date工具类封装 package Dao; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Dateutils { public static final SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd"); public static java.util.Date strtoutildate(String str){ try { Date date = sdf.parse(str); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } public static java.sql.Date utiltosqldate(java.util.Date date){ return new java.sql.Date(date.getTime()); } public static String utildatetostr(java.util.Date date){ String format = sdf.format(date); return format; } } ## MD5加密工具类 ## import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5utils { /** * 密码加密 */ public static String encrypt(String password) throws NoSuchAlgorithmException { //获得MD5加密对象 MessageDigest md5=MessageDigest.getInstance("md5"); //对原密码加密 md5.update(password.getBytes()); //获得加密后的密码字节 byte[] digest = md5.digest(); //将字节转化为密码字符串 StringBuilder builder = new StringBuilder(); for(byte b: digest) { //转化为16进制字符串 //将高4位转换为16进制 builder.append(Integer.toHexString(b>>4&0xf)); //将低4位转换为16进制 builder.append(Integer.toHexString(b&0xf)); } return builder.toString(); } } import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { public static String getMD5(String password) { try { // 得到一个信息摘要器 MessageDigest digest = MessageDigest.getInstance("md5"); byte[] result = digest.digest(password.getBytes()); StringBuffer buffer = new StringBuffer(); // 把每一个byte 做一个与运算 0xff; for (byte b : result) { // 与运算 int number = b & 0xff;// 加盐 String str = Integer.toHexString(number); if (str.length() == 1) { buffer.append("0"); } buffer.append(str); } // 标准的md5加密后的结果 return buffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return ""; } } } ## DBUtils工具类 ## package com.blb.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBUtils { private static Connection conn = null; static{ try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sys?useUnicode=true&characterEncoding=UTF-8", "root", "root"); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } /** * 执行查询 * @param sql * @param params * @return * @throws SQLException */ public static ResultSet executeQuery(String sql, String... params) throws SQLException{ return getParams(sql, params).executeQuery(); } /** * 执行添加、删除、修改 * @param sql * @param params * @throws SQLException */ public static void execute(String sql, String... params) throws SQLException{ getParams(sql, params).executeUpdate(); } /** * 参数处理 * @param sql * @param params * @return * @throws SQLException */ private static PreparedStatement getParams(String sql, String... params) throws SQLException{ PreparedStatement prepareStatement = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { prepareStatement.setObject(i+1, params[i]); } return prepareStatement; } } ## 对事务封装的DButis ## package account; import JDBC.DBUtils; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class DButils { private static final Properties PROPERTIES=new Properties(); private static final ThreadLocal<Connection> THREAD_LOCAL=new ThreadLocal<>(); static { InputStream is = DBUtils.class.getResourceAsStream("/db.properties"); try { PROPERTIES.load(is); Class.forName(PROPERTIES.getProperty("driver")); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getconnection(){ Connection conn=THREAD_LOCAL.get();//获取线程中存储的connection对象 try { if(conn==null){ //如果连接对象为空则创建连接 conn= DriverManager.getConnection(PROPERTIES.getProperty("url"),PROPERTIES.getProperty("username"),PROPERTIES.getProperty("password")); THREAD_LOCAL.set(conn);//把连接存在当前线程共享中 } return conn; } catch (SQLException throwables) { throwables.printStackTrace(); } return null; } //事务的开启 public static void begin() { Connection conn=null; try { conn=getconnection(); conn.setAutoCommit(false); }catch (SQLException e) { e.printStackTrace(); } } //提交事务 public static void commit() { Connection conn=null; try { conn=getconnection(); conn.commit(); }catch (SQLException e) { e.printStackTrace(); }finally { DBUtils.closeall(conn,null,null); } } //回滚事务 public static void rollback() { Connection conn=null; try { conn=getconnection(); conn.rollback(); }catch (SQLException e) { e.printStackTrace(); }finally { DBUtils.closeall(conn,null,null); } } public static void closeall(Connection conn, PreparedStatement pst, ResultSet rs){ if(rs!=null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(pst!=null){ try { pst.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(conn!=null){ try { conn.close(); THREAD_LOCAL.remove();//关闭连接后移除已关闭的connection对象 } catch (SQLException throwables) { throwables.printStackTrace(); } } } } ## DaoUtils ## package com.blb.utils; import com.blb.advanced.RowMapper; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class Daoutils<T>{ /** * 公共处理增删改的方法 * @param sql 执行的sql语句 * @param args 参数列表 * @return */ public int commonsUpdate(String sql,Object...args){ Connection conn=null; PreparedStatement pst=null; conn = DButils.getConnection(); try { pst=conn.prepareStatement(sql); for(int i=0;i<args.length;i++){ pst.setObject(i+1,args[i]); } int i = pst.executeUpdate(); return i; } catch (SQLException e) { e.printStackTrace(); }finally { DButils.closeall(null,pst,null); } return 0; } public List<T> commonsSelect(String sql, RowMapper<T> rowMapper,Object...args) { List<T> arr=new ArrayList<>(); Connection conn=null; PreparedStatement pst=null; ResultSet rs=null; try { conn=DButils.getConnection(); pst=conn.prepareStatement(sql); if(args!=null){ //注意要判断非空否则查询所有的时候会报错误 for(int i=0;i<args.length;i++) { pst.setObject(i+1,args[i]); } } rs = pst.executeQuery(); while (rs.next()){ //根据查询到的结果完成orm T t=rowMapper.getRow(rs); arr.add(t); } return arr; } catch (SQLException e) { e.printStackTrace(); }finally { DButils.closeall(null,pst,rs); } return null; } } 在建一个包用于实现查询里面的orm映射,并且使用泛型这样可以供所有的使用 ### RowMapper 接口 ### package com.blb.advanced; import java.sql.ResultSet; public interface RowMapper<T> { public T getRow(ResultSet rs); } ### PersonRowMapper 实现类 ### package com.blb.advanced.Impl; import com.blb.advanced.RowMapper; import com.blb.entity.Person; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; public class PersonRowMapper implements RowMapper<Person> { @Override public Person getRow(ResultSet rs) { Person person=null; int id1 = 0; try { id1 = rs.getInt("id"); int age = rs.getInt("age"); String name = rs.getString("name"); String email = rs.getString("email"); String address = rs.getString("address"); Date date = rs.getDate("borndate"); person=new Person(id1,name,age,date,email,address); return person; } catch (SQLException e) { e.printStackTrace(); } return null; } } ## Druid DButils ## package com.blb.utils; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class DButils { //声明连接池对象 private static DruidDataSource ds; private static final ThreadLocal<Connection> THREAD_LOCAL=new ThreadLocal<>(); static { //实例化配置对象 Properties properties=new Properties(); InputStream inputStream= DButils.class.getResourceAsStream("/db.properties"); try { properties.load(inputStream); ds=(DruidDataSource) DruidDataSourceFactory.createDataSource(properties); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } //获取连接对象 public static Connection getConnection() { Connection conn=THREAD_LOCAL.get(); try { if(conn == null){ conn=ds.getConnection(); THREAD_LOCAL.set(conn); } } catch (SQLException e) { e.printStackTrace(); } return null; } public static void begin(){ Connection conn=null; try { conn=getConnection(); conn.setAutoCommit(false); } catch (SQLException e) { e.printStackTrace(); } } public static void commit(){ Connection conn=null; try { conn=getConnection(); conn.commit(); } catch (SQLException e) { e.printStackTrace(); }finally { closall(conn,null,null); } } public static void rollback() { Connection conn=null; try { conn=getConnection(); conn.rollback(); } catch (SQLException e) { e.printStackTrace(); }finally { closall(conn,null,null); } } public static void closall(Connection conn, PreparedStatement pst, ResultSet rs){ try { if(rs!=null){ rs.close(); if(pst!=null){ pst.close(); } if(conn!=null){ conn.close(); THREAD_LOCAL.remove(); } } } catch (SQLException e) { e.printStackTrace(); } } //返回一个数据源 public static DataSource getDataSource(){ return ds; } } ## 生成验证码 ## 需要 ValidateCode.jar包 **页面** <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> </head> <body> <form action="login" method="post"> 用户名:<input type="text" name="username" /><br> 密码:<input type="password" name="password" /><br> 验证码:<input type="text" name="vcode" /><img src="/servlet01_war_exploded/createcode"><br> <input type="submit" value="登录"> </form> </body> </html> **生成验证码** package com.blb.demo; import cn.dsna.util.images.ValidateCode; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; @WebServlet("/createcode") public class CreateCode extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ValidateCode vc=new ValidateCode(100,50,4,10); //获得生成验证码里的内容 String code = vc.getCode(); HttpSession session = request.getSession(); session.setAttribute("code",code); //响应给客户端 vc.write(response.getOutputStream()); } } 生成ValidateCode对象的四个参数分别是:宽,高,字符个数,划线的个数
相关 MD5加密工具类-MD5 import org.apache.commons.codec.digest.DigestUtils; /\\ \ \ <p> \ Desc 港控/mmm°/ 2022年05月21日 08:05/ 0 赞/ 149 阅读
相关 MD5加密工具类 import java.security.MessageDigest; public class CodeUtil { 淩亂°似流年/ 2022年05月15日 11:36/ 0 赞/ 161 阅读
相关 MD5加密工具类 import java.io.UnsupportedEncodingException; import java.security.MessageDigest; Bertha 。/ 2022年04月11日 20:49/ 0 赞/ 188 阅读
相关 工具类---MD5加密工具类 MD5加密工具类 import java.math.BigInteger; import java.security.MessageDigest; i £神魔★判官ぃ/ 2022年04月04日 06:59/ 0 赞/ 239 阅读
相关 JAVA MD5加密工具类 import java.io.UnsupportedEncodingException; import java.security.MessageDige 落日映苍穹つ/ 2022年03月16日 15:30/ 0 赞/ 193 阅读
相关 Java MD5 加密工具类 一、MD5简介 [MD5消息摘要算法][MD5](英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生 雨点打透心脏的1/2处/ 2022年02月21日 04:53/ 0 赞/ 216 阅读
相关 Java常用工具类---Random随机数工具类、MD5加密工具类 package com.jarvis.base.util; import java.util.Random; / 川长思鸟来/ 2022年01月29日 09:53/ 0 赞/ 173 阅读
相关 spring的md5加密工具类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered 绝地灬酷狼/ 2021年10月14日 23:39/ 0 赞/ 170 阅读
相关 Java实现MD5的加密工具类 一 点睛 MD5加密算法虽然已经过时,但在一些安全性不太高的行业仍然广受欢迎,在此提供一个MD5加密工具类。 二 代码 package com.imooc 骑猪看日落/ 2021年07月24日 17:19/ 0 赞/ 259 阅读
相关 java手写的一些常用的工具类(DButils,日期工具类,MD5加密工具类) java常用的一些工具类 日期工具类 MD5加密工具类 DBUtils工具类 对事务封装的DButis 桃扇骨/ 2021年06月24日 13:58/ 0 赞/ 355 阅读
还没有评论,来说两句吧...