在線用戶統計問題(續)

採用了jass的方法以後(代碼如下),現在我如果打開首頁,會顯示a   user   coming!  
  可是當我關閉首頁以後,並沒有destroy   Session啊!這是爲什麼呢?請高手解答!如何才能比較準確的一點把關閉IE或者通過其他方式已經離開網站的用戶從列表種清除呢??  
  /**監聽器,監聽用戶的在線信息*/  
  public   class   UserSessionListener  
          implements   HttpSessionListener   {  
      public   UserSessionListener()   {  
      }  
   
      public   static   int   onlineUserCount   =   0;  
      public   static   ArrayList   onlineUsersList   =   new   ArrayList();  
   
      /*   (non-Javadoc)  
        *   @see   javax.servlet.http.HttpSessionListener#sessionCreated(javax.servlet.http.HttpSessionEvent)  
        */  
      public   void   sessionCreated(HttpSessionEvent   httpSessionEvent)   {  
   
          onlineUserCount++;  
          System.out.println(onlineUserCount   +   "   A   users   coming!");  
   
      }  
   
      /*   (non-Javadoc)  
        *   @see   javax.servlet.http.HttpSessionListener#sessionDestroyed(javax.servlet.http.HttpSessionEvent)  
        */  
      public   void   sessionDestroyed(HttpSessionEvent   httpSessionEvent)   {  
          //   TODO   Auto-generated   method   stub  
          onlineUserCount--;  
          SysUser   sysUser   =   (SysUser)   httpSessionEvent.getSession().getAttribute(  
                  "com.hhsoft.beans.elearning.model.user.SysUser");  
          if   (sysUser   !=   null){  
              int   i   =   onlineUsersList.indexOf(sysUser.getUserId());  
              onlineUsersList.remove(i);  
              System.out.println("Session   Destroyed!Session   ID:"   +   sysUser.getUserId());  
          }  
          System.out.println("Session   Destroyed!A   user   left!");  
   
      }  
   
  }   

好像各個Element的順序是有要求的,  
  你最好是按照icon?,display-name?,description?,distributable?,context-param*,filter*,filter-  
  mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welco  
  me-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-const  
  raint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*  
  的順序,listener好像就必須放在filter-mapping的後面,servlet的前面,  
  你把session-config放到servlet-mapping後面試試。  
  下面是我的一個config,就沒有問題:  
   
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <!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>  
      <filter>  
          <filter-name>servlet2</filter-name>  
          <filter-class>servletexam.Servlet2</filter-class>  
      </filter>  
      <filter>  
          <filter-name>servlet3</filter-name>  
          <filter-class>servletexam.Servlet3</filter-class>  
      </filter>  
      <filter-mapping>  
          <filter-name>servlet2</filter-name>  
          <url-pattern>/*</url-pattern>  
      </filter-mapping>  
      <filter-mapping>  
          <filter-name>servlet3</filter-name>  
          <servlet-name>servlet1</servlet-name>  
      </filter-mapping>  
      <listener>  
          <listener-class>servletexam.MySessionListener</listener-class>  
      </listener>  
      <servlet>  
          <servlet-name>action</servlet-name>  
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
          <init-param>  
              <param-name>config</param-name>  
              <param-value>/WEB-INF/struts-config.xml</param-value>  
          </init-param>  
          <init-param>  
              <param-name>debug</param-name>  
              <param-value>2</param-value>  
          </init-param>  
          <load-on-startup>2</load-on-startup>  
      </servlet>  
      <servlet>  
          <servlet-name>servlet1</servlet-name>  
          <servlet-class>servletexam.Servlet1</servlet-class>  
      </servlet>  
      <servlet-mapping>  
          <servlet-name>action</servlet-name>  
          <url-pattern>*.do</url-pattern>  
      </servlet-mapping>  
      <servlet-mapping>  
          <servlet-name>servlet1</servlet-name>  
          <url-pattern>/servlet1</url-pattern>  
      </servlet-mapping>  
      <session-config>  
          <session-timeout>1</session-timeout>  
      </session-config>  
      </web-app>  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章