其實剛開始是不知道怎麼去做的,百度了一堆,結果都是沒有用的,
網上的結果不是說用session記錄就是說用cookie記錄,還有的用application(訪問次數??服務員關閉的時候消亡) 但注意~
其實上面的辦法都是行不通的,因爲他們都有生命週期,像cookie有些瀏覽器還會禁用,因此,不能用他們來記錄變化的值!那用什麼呢??
不錯,數據庫,可以用數據庫來記錄變化的值。所以,你需要先在數據庫中建表,假設有兩個字段分別爲:total_login_count(登錄總次數,int型) 和 last_login_time(最後登錄時間,datetime型) ,開始解說:
1. 記錄用戶的登錄總次數:
拿用戶登錄來說,用戶每登錄一次我們就需要將數據庫中的相應字段值加 1,代碼如下:
String sql ="update testuser set total_login_count = total_login_count+1 where username ='"+uname+"';";
try {
conns.insert(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("數據更新錯誤");
e.printStackTrace();
}
注意:上面的conns.insert(sql)是博主自己封裝的代碼,你按照普通連接做就行了。
還有需要注意的一點就是(博主在這裏還浪費了半天時間,果然人蠢的無法~-~):在java代碼中對數據庫進行操作,當涉及到字符串的操作時(比如上面的uname,是從表單中提取的字符串),使用數據庫查詢的時候就需要加單引號(其實對於mysql中的所有字符都是要加單引號,比如select* from std where stdname='靜靜')希望各位博友會不會栽跟頭
2.記錄用戶最後的登錄時間
道理跟上面是一樣的,用戶在登錄之後將取得系統時間並改寫數據庫中相應字段的值:
Date date = new Date(); //獲取當前時間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //格式化爲:年月日 時分秒 以匹配數據庫相應字段的類型
String datetime = sdf.format(date);
String sql2 = "update testuser set last_login_time = '"+datetime+"' where username ='"+uname+"';";
try {
conns.insert(sql2);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("數據更新錯誤");
e.printStackTrace();
}