1. 程式人生 > >jsp之記錄使用者登入的總次數以及記錄使用者最後一次登入的時間

jsp之記錄使用者登入的總次數以及記錄使用者最後一次登入的時間

其實剛開始是不知道怎麼去做的,百度了一堆,結果都是沒有用的,

網上的結果不是說用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();
}
		
這裡需要注意的就是如何獲取當前時間並進行格式化,然後再改寫資料庫中的相應欄位值