传智播客bbs项目,密码MD5加密及日期转换器

来源:互联网 发布:阿里云备案提交管局 编辑:程序博客网 时间:2024/05/05 23:46

     今天继续学习bbs项目,汤老师讲了会员注册的实现,要对密码进行md5加密,日期型的属性存入数据库前要进行解析,如会员的生日,注册日期等。还有要对用户注册信息进行服务器和客户端验证。下面介绍一下我在学习中遇到的比较重要的知识。

    昨天概述了一下md5加密算法,MessageDigest实例对象的digest方法产生数字摘要是一个字节数组,我们应该将这个字节数组转换为16进制的字符串,再存入数据库。具体实现如下:
              //获得md5算法的MessageDigest实例对象,
        public static String digest(String str){
                 MessageDigest md = MessageDigest.getInstance("MD5");
   //传入要进行数字摘要运算的数据源
   md.update(str.getBytes("utf-8"));
   //得到数字摘要字节数组
   byte[] buf = md.digest();
   //得到16进制的字符串
   StringBuffer hexString = new StringBuffer();
   for (byte b : buf) {
           //如果大于00001111,则直接添加其转换后的字符串
    if ((b & 0xff) > 0xf) {
     hexString.append(Integer.toHexString(0xff & b));
        //先添加个“0”,再添加其转换后的字符串
    } else {
     hexString.append("0").append(Integer.toHexString(0xff & b));
    }
   }

   return hexString.toString();
    }

     

   日期转换器: 

      simpleDateFormat 的format() 和parse方法,分别用于日期/时间的格式化和解析。format方法将日期/时间对象格式化为符合某个本地环境的字符串,parse方法将符合某个本地环境的日期/时间字符串解析为日期/时间对象。
         写一个日期转换器,在日期型和字符串型之间转换,
1,写一个实现org.apache.commons.beanutils.Converter的日期转换器类DateConverter类 ,按一定格式把字符串型的日期解析成Date型的,
public class ActionFormDateConverter implements Converter {
 private static final Log log = LogFactory.getLog(ActionFormDateConverter.class);
 private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

 @SuppressWarnings("unchecked")
 public Object convert(Class clazz, Object value) {
  if (value == null) {
   return null;
  }

  String source = (String) value;
  try {
   return new ActionFormDate(sdf.parse(source));
  } catch (ParseException e) {
   log.debug(e.getMessage());
   return null;
  }
 }

}
2,写一个ActionFormDate类,它继承Date类,用于定义要进行解析的属性。
public class ActionFormDate extends Date {
 private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

 public ActionFormDate() {
 }

 public ActionFormDate(Date date) {
  super(date.getTime());
 }

 @Override
 public String toString() {
  return sdf.format(this);
 }
}
3,写一个Servlet,把转换器类注册进org.apache.commons.beanutils.ConvertUtils

ConvertUtils.register(new ActionFormDateConverter(), ActionFormDate.class);

4,在web.xml文件中注册第3步写的servlet。
5,这样就可以在formbean中用ActionFormDate定义要进行解析的日期行属性了。

 

   有文件上传时。 jsp页面的表单<form>中要添加属性enctype="multipart/form-data"。


   对上传图片进行存储,要使用org.apache.struts.upload.FormFile类,它有一个getFileData()方法可以读取浏览器端上传数据的字节数组。