关于用户是否在线的处理,大家来讨论.
一WEB系统(hibernate+spring+structs+aop),要判断用户是否在线,用DB的某个字段来判断显然不能解决下列情况下的处理   
 1,死机 
 2,出异常 
 3,非正常退出系统,比如结束进程 
 4,用户直接点击IE窗口的X按钮关闭     
 请问:大家有过此方面的处理吗?还有其他的方案吗?
------解决方案--------------------给你个代码 
 ///////////////////////////////////////////////////////////////////////////// 
 package demo.listener;   
 import javax.servlet.ServletContext; 
 import javax.servlet.http.HttpSessionEvent; 
 import javax.servlet.http.HttpSessionListener;   
 public class SessionCounter implements HttpSessionListener { 
     public void sessionCreated(HttpSessionEvent event) { 
         ServletContext ctx = event.getSession( ).getServletContext( ); 
         Integer numSessions = (Integer) ctx.getAttribute( "numSessions "); 
         if (numSessions == null) { 
             numSessions = new Integer(1); 
         } 
         else { 
             int count = numSessions.intValue( ); 
             numSessions = new Integer(count + 1); 
         } 
         ctx.setAttribute( "numSessions ", numSessions); 
     } 
     public void sessionDestroyed(HttpSessionEvent event) { 
         ServletContext ctx = event.getSession( ).getServletContext( ); 
         Integer numSessions = (Integer) ctx.getAttribute( "numSessions "); 
         if (numSessions == null) { 
             numSessions = new Integer(0); 
         } 
         else { 
             int count = numSessions.intValue( ); 
             numSessions = new Integer(count - 1); 
         } 
         ctx.setAttribute( "numSessions ", numSessions); 
     } 
 }   
 在这个解决方案中,任何一个Session被创建或者销毁时,都会通知SessionCounter 这个类,当然通知的原因是必须在web.xml文件中做相关的配置工作。如下面的配置代码:   
  <?xml version= "1.0 " encoding= "ISO-8859-1 " ?>  
  <!DOCTYPE web-app PUBLIC 
      "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN " 
      "http://java.sun.com/dtd/web-app_2_3.dtd ">        
  <web-app>  
    <display-name> Struts Examples </display-name>      
    <listener>  
        <listener-class> demo.listener.SessionCounter 
        </listener-class>  
    </listener>  
   ... rest of web.xml