本实例在struts2框架中编写。主要分两步:
1:编写监听代码CheckSessionListener.java
public class CheckSessionListener implements HttpSessionListener
{
/**
* 日志
*/
private Logger log = Logger.getLogger(CheckSessionListener.class);
@Override
public void sessionCreated(HttpSessionEvent hse)
{
log.info("创建session");
}
@Override
public void sessionDestroyed(HttpSessionEvent hse)
{
Connection con = null;
PreparedStatement ps = null;
try
{
//获取当前用户
User myUser = (User)hse.getSession().getAttribute(MsgConstant.SESSION_USER_KEY);
if (curUser != null)
{
String sql = "update my_loginuser set out_time = now() where out_time is null and user_id = "
+ myUser.getUserId();
//获得Connection
con = DBManager.getDBConnection();
ps = con.prepareStatement(sql);
ps.execute();
ps.close();
con.close();
}
hse.getSession().removeAttribute(MsgConstant.SESSION_USER_KEY);
log.info("用户session销毁");
}
catch (Exception e)
{
log.error(e);
}
}
}
2:在web.xml中注册
<listener>
<listener-class>com.suyin.epcc.listener.CheckSessionListener</listener-class>
</listener>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
说明:实现
HttpSessionListener 的<pre name="code" class="java">sessionDestroyed方法,
此方法常常在用户长时间没有访问服务器的时候执行。
并且常常和<pre name="code" class="html"> <session-config>
<session-timeout>60</session-timeout>
</session-config>
(设置超时时间)一起配合使用。
·