图书管理系统总结——使用到的一些工具类
将所有用到的一些工具类函数专门置于一个包类,写成不同类,是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);