找不到getCounterInfo()方法,错误说的很清楚啊!

解决方案 »

  1.   

    需要将class Counter到入到你的jsp文件中
      

  2.   

    没动过代码居然,好了。但是有发现一个问题
    package test;import java.util.Date;
    import java.util.Map;
    import java.util.HashMap;
    import javax.servlet.http.*;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;public class UserCounter implements HttpSessionListener {
      private static int counter=0;
      private static int activecounter=0;
      private String userName;  public void sessionCreated(HttpSessionEvent event){
        counter++;
        activecounter++;
    HttpSession session =event.getSession();
    //企图在这里到到登页面的设置的SESSION的属性,不对吗?
    userName=(String)session.getAttribute("user");
    long time =session.getCreationTime();
    ServletContext ctx =session.getServletContext();
    Map map =(Map)ctx.getAttribute("user");
    if(map==null) {
    map=new HashMap();
    ctx.setAttribute("user",map);
    }
    map.put(userName,userName);
        System.out.println(userName+" entered");
        System.out.println(session.getId()+" session was created "+new Date(time));
      }  public void sessionDestroyed(HttpSessionEvent event) {
        activecounter--;
    HttpSession session =event.getSession();
    ServletContext ctx =session.getServletContext();
    Map map =(Map)ctx.getAttribute("user");
    map.remove(userName);
        System.out.println("a session was destoryed");
      }  public static String getCounterInfo() {
        return "Number of session : "+counter+
               "Number of activesession : "+activecounter;
      }
    }
    /////////////登录页面enter.jsp <%@ page import="test.UserCounter"%> 
    <% 
      session.setAttribute("user","secondman"); 
    %>   
    <%=UserCounter.getCounterInfo()%> 
    <%=session.getAttribute("user")%>   
    <a href="User.jsp">go</a> /////////////User.jsp 
    <% 
    int userCount = 0;  
    java.util.Map map = (java.util.Map)application.getAttribute ("user");  
    if (map == null) userCount = 0;  
    else userCount = map.size ();  
    %> 
    <b>在线用户名</b> 
    <%=map.keySet()%> 
    <b>在线用户数</b> 
    <%=userCount%> 
    ////////////////////////////////// 
    为什么在线用户表总是NULL呢
      

  3.   


    import java.sql.*;
    import java.io.*;
    import java.util.*;
    import java.util.Date;
    import java.util.Map;
    import java.util.HashMap;
    import javax.servlet.http.*;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;public class UserCounterp implements HttpSessionListener,HttpSessionAttributeListener {
      private static int counter=0;
      private static int activecounter=0;
      private String userName;
    public void sessionCreated(HttpSessionEvent event){
        counter++;
        activecounter++;
      }  public void sessionDestroyed(HttpSessionEvent event) {
        activecounter--;
    HttpSession session =event.getSession();
    ServletContext ctx =session.getServletContext();
    Map map =(Map)ctx.getAttribute("users");
    map.remove(userName);    System.out.println("a session was destoryed");
      }  public void attributeAdded(HttpSessionBindingEvent event) {
    HttpSession session =event.getSession();
    userName=(String)session.getAttribute("username");
    id=(String)session.getAttribute("id");
    if(userName!=null) {
    long time =session.getCreationTime();
    ServletContext ctx =session.getServletContext();
    Map map =(Map)ctx.getAttribute("users");
    if(map==null) {
    map=new HashMap();
    ctx.setAttribute("users",map);
    }
    user.setName(userName);
    user.setTime(new Date(time));
    map.put(userName,user);
    writeLog(userName);
    System.out.println(userName+" entered");
    System.out.println(session.getId()+" session was created "+new Date(time));
    }
      }
    } public void attributeRemoved(HttpSessionBindingEvent event) {} public void attributeReplaced(HttpSessionBindingEvent event) {}  public static String getCounterInfo() {
        return "Number of session : "+counter+
               "Number of activesession : "+activecounter;
      }  private void writeLog(String userName) {
    try {
    Calendar calendar=new GregorianCalendar();
    System.out.println("LOGIN:"+userName+" TIME:"+calendar.getTime());
    String logString="\nLOGIN:"+userName+" TIME:"+calendar.getTime()+"\n";
    for(int i=1;i<1000;i++) {
    File file=new File("yeeyoo.log"+i);
    if(!(file.exists()))
    file.createNewFile();//如果文件不存在,创建此文件
    if(file.length()>1048576)//如果文件大于1M,重新创建一个文件
    continue;
    FileOutputStream foo=new FileOutputStream("yeeyoo.log"+i,true);
    //以append方式打开创建文件
    foo.write(logString.getBytes(),0,logString.length());//写入日志字符串
    foo.close();
    break;//退出
    }
    } catch (FileNotFoundException e) {}
    catch(IOException e) {}
    }
    }大约这样可以了,实在不行,就用前面帖子的方法。