选择显示字体大小

jbuilder2005实战jsp之日志和部署

用户登录和退出日志

  当用户登录系统时,在日志表中插入一条记录,记录用户登录的时间,在用户退出系统时记录用户退出系统的时间。

  我们利用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
34.  {
35.   if (conn != null)
36.   {
37.    conn.close();
38.   }
39.  } catch (sqlexception ex)
40.  {
41.   ex.printstacktrace();
42.  }
43.  }
44. }
45.
46. public void valueunbound(httpsessionbindingevent event)
47. {
48.  connection conn = null;
49.  string sqlstr = " update t_login_log set dt_lonout = ? " +
50.      " where user_id=? and dt_login = ?";
51.  try
52.  {
53.   conn = dbconnection.getconnection();
54.   preparedstatement pstat = conn.preparestatement(sqlstr);
55.   pstat.setstring(1, getcurrdatetimestr());
56.   pstat.setstring(2, userid);
57.   pstat.setstring(3, logindatetime);
58.   pstat.executeupdate();
59.
60.  } catch (sqlexception e)
61.  {
62.   throw new runtimeexception(
63.    "用户退出日志写入出错");
64.  } finally
65.  {
66.   try
67.   {
68.    if (conn != null)
69.    {
70.     conn.close();
71.    }
72.   } catch (sqlexception ex)
73.   {
74.    ex.printstacktrace();
75.   }
76.  }
77. }
78.
79. //获取当前时间字串,以yyyymmddhhmmss格式返回,如20050505010101
80. private static string getcurrdatetimestr()
81. {
82.  simpledate表单at sdf = new simpledate表单at("yyyymmddhhmmss");
83.  return sdf.表单at(new date());
84. }

85. }

  valuebound()方法向t_login_log表插入一条登录日志,在valueunbound()方法中更新日志表的退出时间,此外第80~84行提供了一个获取当前时间串的方法getcurrdatetimestr(),通过该方法获取登录和退出时间点的时间字符串。

  下面通过描述用户登录系统直到退出时所经历的步骤说明程序如何记录用户的登录和退出时间的:

  1.用户通过login.jsp输入密码登录后,程序转向switch.jsp控制页面。

  2.在switch.jsp中,我们通过session.setattribute("ses_userbean", userbean)方法将user.java类的对象userbean绑定到session中。

  3.此时userbean对象的httpsessionbindinglistener接口方法valuebound()被调用,向t_login_log表插入一条登录日志。

  4.switch.jsp转向welcome.jsp页面。

  5.用户点击welcome.jsp页面中的链接退出系统时,转向quit.jsp页面。

  6.quit.jsp调用session.invalidate()方法,userbean对象从session中清除。

  7.此时userbean对象的httpsessionbindinglistener接口方法valueunbound()方法被调用,更新日志的退出时间,关闭浏览器窗口。

  httpsessionbindinglistener接口是web容器的事件接口,实现接口的类在某个事件发生时自动被调用,web容器有多个这样的事件接口,它们分别是:

  ·servletcontextlistener 接口:web容器启动和销毁的事件处理接口,接口中定义了两个方法。

  ·servletcontextattributelistener接口:web上下文属性发生更改时的事件处理接口。

  ·httpsessionlistener接口:session创建和销毁事件的事件处理接口。

  ·httpsessionattributelistener接口:session会话中属性对象更改的事件处理接口,该接口和我们在前面使用的httpsessionbindinglistener接口相似。

  此外在j2ee1.4中还提供了另外两个事件处理接口,它们是:

  ·servletrequestlistener接口:request请求对象创建和销毁事件处理接口。

  ·servletrequestattributelistener接口:更改request中属性对象时的事件处理接口。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons