首页 > 技术文章 > 图书管理系统总结——使用到的一些工具类

satire 2017-05-14 11:37 原文

将所有用到的一些工具类函数专门置于一个包类,写成不同类,是MVC架构的一种良好方式。

一、判定字符串是否为空。这里的空指去掉首尾的空格后为空。

/**
 * 字符串工具类
 * @author Administrator
 *
 */
public class StringUtil 
{

    /**
     * 判断是否是空
     * @param str
     * @return
     */
    public static boolean isEmpty(String str){
        if(str==null || "".equals(str.trim()))//空串或前后空格去掉后为空
        {
            return true;
        }
        else{
            return false;
        }
    }
}

二、指定长宽,改变图片尺寸:

public class PictureUtil 
{
    /**
      * 改变图片尺寸
      * @param srcFileName 源图片路径
      * @param tagFileName 目的图片路径
      * @param width 修改后的宽度
      * @param height 修改后的高度
      */
     public static void zoomImage(String srcFileName,String tagFileName,int width,int height)
     {  
      try {
       BufferedImage bi = ImageIO.read(new File(srcFileName));
       BufferedImage tag=new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
       tag.getGraphics().drawImage(bi, 0, 0, width, height, null);
       ImageIO.write(tag, "jpg", new File(tagFileName));
      } catch (IOException e) {
       e.printStackTrace();
      }
     }
}

三、注册用户时候对密码进行加密的函数——使用MD5加密方式:

先看加密结果,下面是数据库中原数据显示:

/**
 * 采用MD5加密解密
 * @author asus
 * @datetime 2017-04-13
 */
public class MD5Util {

    /***
     * MD5加码 生成32位md5码
     */
    public static String string2MD5(String inStr){
        MessageDigest md5 = null;
        try{
            md5 = MessageDigest.getInstance("MD5");
        }catch (Exception e)
        {
            System.out.println(e.toString());
            e.printStackTrace();
            return "";
        }
        char[] charArray = inStr.toCharArray();
        byte[] byteArray = new byte[charArray.length];

        for (int i = 0; i < charArray.length; i++)
            byteArray[i] = (byte) charArray[i];
        byte[] md5Bytes = md5.digest(byteArray);
        StringBuffer hexValue = new StringBuffer();
        for (int i = 0; i < md5Bytes.length; i++){
            int val = (md5Bytes[i]) & 0xff;
            if (val < 16)
                hexValue.append("0");
            hexValue.append(Integer.toHexString(val));
        }
        return hexValue.toString();

    }

    /**
     * 加密解密算法 执行一次加密,两次解密
     */ 
    public static String convertMD5(String inStr){

        char[] a = inStr.toCharArray();
        for (int i = 0; i < a.length; i++){
            a[i] = (char) (a[i] ^ 't');
        }
        String s = new String(a);
        return s;

    }

}

使用方法:

String Md5Str=MD5Util.string2MD5(password);//由密码生成MD5码
 password=MD5Util.convertMD5(Md5Str);//加密
 int currentUser=userdao.Register(con,Id,userName, password);//将加密后密码置于数据库中

登录时候处理:

//将输入密码解密,与数据库中比较
String Md5Str=MD5Util.string2MD5(password);
password=MD5Util.convertMD5(Md5Str);//加密
User user=new User(userID,password);//用加密后密码生成用户类,登录时候与数据库中密码比较

四、SQL中Date类在JAVA SE中处理

JDBC对于数据库的操作还是挺方便的,SQL中的类型在JAVA中都有对应类型。这里Date对应java.sql.Date类型,两者可以直接赋值,而且java.sql.Date还提供了一些方法操作时间。

1、对时间做加法

比如规定借阅一本书2个月要换,那么可以吧应该归还日期记录在表格中。那么如何对时间+60天?Calendar类提供了函数,只要进行和java.sql.Date熟路类型转化一下就可以.

public static Date DateAdd(Date OriginDate,int day)
 {  
        Calendar calendar =new GregorianCalendar();  
        calendar.setTime(OriginDate);  
        calendar.add(Calendar.DATE, day);  //时间加法
        // calendar的time转成java.util.Date格式日期  
        java.util.Date utilDate = calendar.getTime();  
        //java.util.Date日期转换成转成java.sql.Date格式  
        Date newDate =new Date(utilDate.getTime());  
        return newDate;
}  

2、提取年,月,日并分别转化为整数。用于折线图Monthly数组下标:

/**
     * 从date类型中取得具体年,月,日,用于画折线图
     * @param OriginDate
     * @param date 自定义类
     */
    public static void getdate(Date OriginDate,DateInt date)
    {
        Calendar calendar =new GregorianCalendar(); 
        calendar.setTime(OriginDate);
        int year=calendar.get(Calendar.YEAR);   
        //得到年 
        int month=calendar.get(Calendar.MONTH);   
        //得到月,但是,月份要加上1   
        month=month+1; 
        int day=calendar.get(Calendar.DATE);   
        //获得日期   
        date.setDay(day);
        date.setMonth(month);
        date.setYear(year);
    }

3、用java.sql.Date获取系统时间方式

//获取当前时间
 java.sql.Date currentDate = new java.sql.Date(System.currentTimeMillis());

 4、整型与字符串转化

字符串转化为整形:

String str = "123";
int a = Integer.parseInt(str);

整形转化为字符串:

int i=12345;
s=String.valueOf(i);

 

推荐阅读