怎样通过Servlet中的Listener实现在线人数统计?

解决方案 »

  1.   

    public class OnlineCounter {  
      private static long online = 0;    
      public static long getOnline(){ 
          return online; 
        } 
        public static void raise(){ 
          online++; 
        } 
        public static void reduce(){ 
          online--; 
      } 
    } import javax.servlet.http.HttpSessionEvent; 
    import javax.servlet.http.HttpSessionListener; 
    public class OnlineCounterListener implements HttpSessionListener{ 
        public void sessionCreated(HttpSessionEvent hse) { 
            OnlineCounter.raise();  
        } 
      public void sessionDestroyed(HttpSessionEvent hse){  
            OnlineCounter.reduce(); 
        } 

    记得配置web.xml
      

  2.   

    请参考我们的jsp教程中相关的部分:
    http://family168.com/tutorial/jsp/html/jsp-ch-08.html
      

  3.   

    LZ参考一下:
    http://blog.csdn.net/lgq_0714/archive/2009/06/15/4269947.aspx
      

  4.   

    对应的类package com.lw.chapter14;import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;/**
     * 计算网站在线人数的统计
     * 1.当通过一个客户端浏览器访问本网站的时候
     *   会有session对象自动创建,从而调用sessionCreated()方法,
     * 2.当一个用户离开本网站的时候,其想对应的session对象就回自动的销毁
     *   (在实践应用中不能快速的放映出来)而调用sessionDestroyed()方法  
     *   
     *   
     * Servlet中的监听器必须实现相应的接口
     * */
    public class CounterListener implements HttpSessionListener {
    private static long onLineNumber;

    public static long getCounter(){
    return onLineNumber;
    }
    public void sessionCreated(HttpSessionEvent arg0) {
    onLineNumber++;
    } public void sessionDestroyed(HttpSessionEvent arg0) {
    onLineNumber--;
    }}
    在web.xml中配置<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <listener>
    <listener-class>
    com.lw.chapter14.CounterListener
    </listener-class>
    </listener>
    </web-app>