JBuilder2005實戰JSP之日誌和部署
來源:互聯網
上載者:User
使用者登入和退出日誌
當使用者登入系統時,在日誌表中插入一條記錄,記錄使用者登入的時間,在使用者退出系統時記錄使用者退出系統的時間。
我們利用HttpSessionBindingListener介面來完成記錄登入和退出日誌的功能,該介面中定義了兩個方法:
·valueBound(HttpSessionBindingEvent event)
·valueUnbound(HttpSessionBindingEvent event)
如果一個類實現了HttpSessionBindingListener介面,當對象通過session.setAttribute()被綁定到Session中時,則對象的介面方法valueBound()被自動調用,當對象從session中移出時(通過調用session.invalidate()、session.removeAttribute()或session自動到期時),valueUnbound()方法將被自動調用。
下面我們使User.java類實現HttpSessionBindingListener介面,調整後的代碼如下所示:
代碼清單 18 實現了HttpSessionBindingListener的User.java
1. package bookstore;
2. import javax.servlet.http.HttpSessionBindingListener;
3. import javax.servlet.http.HttpSessionBindingEvent;
4. import java.sql.*;
5. import java.text.SimpleDate表單at;
6. import java.util.Date;
7.
8. public class User implements HttpSessionBindingListener
9. {
10. …
11. private String loginDatetime;//使用者登入時間
12. …
13. public void valueBound(HttpSessionBindingEvent event)
14. {
15. Connection conn = null;
16. String sqlStr = "insert into T_LOGIN_LOG(ID, USER_ID, DT_LOGIN) " +
17. " values(SEQ_LOGIN_LOG_ID.NEXTVAL,?,? )";
18. try
19. {
20. conn = DBConnection.getConnection();
21. PreparedStatement pStat = conn.prepareStatement(sqlStr);
22. loginDatetime = getCurrDatetimeStr(); //目前時間串
23. pStat.setString(1, userId);
24. pStat.setString(2, loginDatetime);
25. pStat.executeUpdate();
26.
27. } catch (SQLException e)
28. {
29. throw new RuntimeException(
30. "使用者登陸日誌寫入出錯");
31. } finally
32. {
33. try