java手写的一些常用的工具类(DButils,日期工具类,MD5加密工具类)

日期工具类

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对象的四个参数分别是:宽,高,字符个数,划线的个数

猜你喜欢

转载自blog.csdn.net/qq_44866153/article/details/113523413
今日推荐