您的位置:首页 > 其它

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

2009-03-14 22:34 363 查看
今天继续学习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()方法可以读取浏览器端上传数据的字节数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: