今天繼續學習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()方法可以讀取瀏覽器端上傳數據的字節數組。