JBuilder2005实战JSP之日志和部署(7)
时间:2007-10-22 来源:不详 作者:林子
当用户登录系统时,在日志表中插入一条记录,记录用户登录的时间,在用户退出系统时记录用户退出系统的时间。
我们利用HttpSessionBindingListener接口来完成记录登录和退出日志的功能,该接口中定义了两个方法:
ⷶalueBound(HttpSessionBindingEvent event)
ⷶalueUnbound(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; copyright dedecms
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
34. {
35. if (conn != null)
36. {
上一篇:jsp文件操作之写入篇 下一篇:JBuilder2005实战JSP之特殊页面(5)
文章评论
共有位Admini5网友发表了评论 查看完整内容