假如你的web server是几种,比如是apache+tomcat,那就很简单了,统计各自处理的页面
最傻瓜的办法就是监视端口了

解决方案 »

  1.   

    公司配置的服务器很简单 就是 tomcat+IIs而已
      

  2.   

    打开iis的日志功能,找一个分析软件,或者自己写一个简单的
      

  3.   

    用listener来做package com;import javax.servlet.http.*;public class Counter  implements HttpSessionListener 
    {
    public void sessionCreated(HttpSessionEvent evt)
    {
    HttpSession session = evt.getSession();
    if(session.isNew())
    {
    if(Count()<0)
    {
    System.out.println("新session计数器出现错误");
    }
    }
    }
    public void sessionDestroyed(HttpSessionEvent evt)
    {

    }
    public synchronized int  Count()
    {
    SqlModify count = new SqlModify();
    return count.modify("Update counter set hitcount=hitcount+1 where range = 'allsite'");
    }
    }
      

  4.   

    总访问量用HttpSessionListener接口监听HTTP会话的建立,存储为文件
    实现当前在线人数之类只需要放入ServletContext里面就行了
    package com;import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    public class Listener implements HttpSessionListener, ServletContextListener { ServletContext context;
    int users = 0;

    public void sessionCreated(HttpSessionEvent arg0) {
    //session创建时候触发
    users++;
        System.out.print("sessionCreated:SessionID="+ arg0.getSession().getId()+ ",目前有"+ users+ "个用户");
    context.setAttribute("users", new Integer(users));
    } public void sessionDestroyed(HttpSessionEvent arg0) {
    //session销毁时候触发
    users--;
    System.out.print("sessionDestoryed:SessionID="+ arg0.getSession().getId()+ ",目前有"+ users+ "个用户");
    context.setAttribute("users", new Integer(users));
    }
    public void contextInitialized(ServletContextEvent arg0) {
    //服务启动后创建ServletContex时触发
    this.context = arg0.getServletContext();
    System.out.print("ServletContext初始化了"); }
    public void contextDestroyed(ServletContextEvent arg0) {

    System.out.print("ServletContext被销毁");
    this.context = null; }}
      

  5.   

    对了,别忘了在WEB-INF/web.xml里面部署
        <listener>
            <listener-class>com.Listener</listener-class>
        </listener>
      

  6.   

    To jfy3d(剑事):
    我认为在Context中维护一个变量就可以了,没必要每次都在数据库中更新
    只需在服务关闭前写入,在服务启动时再重新读入作为计数器的初始值就可以了
      

  7.   

    我发的那个是网站记数器 不是记录用户的HttpSessionBindingListener做更细致的统计
    package list;import javax.servlet.http.*; 
    import javax.servlet.*; 
    import java.util.*; public class onLineUser implements HttpSessionBindingListener { 
         public onLineUser(){
       }    private Vector users=new Vector();
       public int getCount(){
           users.trimToSize();
           return users.capacity();
       }
       public boolean existUser(String userName){
           users.trimToSize();
           boolean existUser=false;
           for (int i=0;i<users.capacity();i++ )
           {
               if (userName.equals((String)users.get(i)))
               {
                   existUser=true;
                   break;
               }
           }
           return existUser;
       }   public boolean deleteUser(String userName) {
           users.trimToSize();
           if(existUser(userName)){
               int currUserIndex=-1;
               for(int i=0;i<users.capacity();i++){
                   if(userName.equals((String)users.get(i))){
                       currUserIndex=i;
                       break;
                   }
               }
               if (currUserIndex!=-1){
                   users.remove(currUserIndex);
                   users.trimToSize();
                   return true;
               }
           }
           return false;
       }   public Vector getOnLineUser()
       {
           return users;
       }
         public void valueBound(HttpSessionBindingEvent e) { 
           users.trimToSize();
           if(!existUser(e.getName())){
               users.add(e.getName());
               System.out.print(e.getName()+"\t   登入到系统\t"+(new Date()));
               System.out.println("      在线用户数为:"+getCount());
           }else
               System.out.println(e.getName()+"已经存在");
         }      public void valueUnbound(HttpSessionBindingEvent e) { 
           users.trimToSize();
           String userName=e.getName();
           deleteUser(userName);
           System.out.print(userName+"\t   退出系统\t"+(new Date()));
           System.out.println("      在线用户数为:"+getCount());
         } 
    }