今天繼續學習bbs項目,和學基礎知識太不一樣了,遇到太多的問題,湯老師經驗豐富,跟他學了不少排錯方法技巧。看湯老師解決異常的方法,實際上遇到的異常都應該能夠自行解決的,只是有有時候長時間解決不了就急了,思路也就亂了。主要原因還是經驗,踏實學吧,對今天遇到的比較重要的知識,總結一下。
BeanFactory bean工廠,用於管理bean,可以把bean進行命名用=連接它的完整路徑存放在.properties文件中,然後
1.通過輸入流讀取.properties文件的內容,
2.調用Properties類的load()方法按行從輸入流中讀取屬性列表(鍵和元素對)。
3,提出bean類名,使用反射獲得類的實例,放到map中,使用beanName作爲key,beanObject爲value。
配置文件中定義格式:
beanName = beanClassName
方法如下
private static Map<String, Object> beans = new HashMap<String,
Object>();
public static void initBeans(String properties) {
Properties props = new Properties();
InputStream inStream = null;
try {
inStream =BeanFactory.class.getClassLoader ().getResourceAsStream(properties);
props.load(inStream);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (inStream != null) {
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
for (Object key : props.keySet()) {
String beanName = (String) key;
String className = props.getProperty(beanName);
// 使用反射生成實例
try {
Object bean = Class.forName(className).newInstance();
beans.put(beanName, bean);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
最後提供一個用於在其他地方獲取bean的方法
public Object getBean(String beanName) {
return beans.get(beanName);
}
其它地方獲取bean使用:getBean(beanName);
md5加密算法
網站會員註冊都要有用戶名和密碼,爲了防止有些人可以進入數據庫查看用戶的密碼,要首先對密碼進行MD5加密再存入數據庫。md5加密算法用於對一段信息進行不可逆的變換運算,產生一個128比特位的數字摘要。實際項目中的密碼都是進行加密後存入數據庫的。在對用戶的密碼進行加密時不能採用可逆的加密算法,因爲可逆算法加密後的結果可以很容易解密,不能採用可逆的算法。實際項目中一般都採用md5算法對用戶註冊的密碼進行加密,即使得到了加密後的結果,也無法根據這個結果得到用戶的密碼,這樣就不用擔心可以進入數據庫的人獲取用戶的密碼信息了。在用戶註冊以後進行登錄時,系統對用戶輸入的密碼也進行md5運算,將結果與數據庫中存在的數據進行比較,如果兩個數據相等,則說明用戶輸入的密碼正確,允許等錄,否則登錄失敗。
jdk提供了一個java.security.MessageDigest類,程序可以通過這個類調
用md5和sha算法來產生數字摘要。首先調用MessageDigest類的getInstance靜態方法獲得某個算法的MessageDigest實例對象,然後調用MessageDigest實例對象的update方法傳遞要進行數字摘要運算的數據源,數據源可以通過多次調用update方法進行累加,最後調用MessageDigest實例對象的digest方法產生數字摘要。