用一个session记录好了,
当用户登陆后就记录session

解决方案 »

  1.   

    使用session事件接口,下面是一个例子,实现了登陆日志功能,稍加改造就可以达到你的目的
    package supp;
    import java.io.*;
    import java.util.*;
    import javax.servlet.http.*;public class SessionListener implements HttpSessionBindingListener{
    public String privateInfo="";
    private String logString="";
    private int count=0;
    public  SessionListener(String info){
    this.privateInfo=info;
    }
    public void valueBound(HttpSessionBindingEvent event){
    count++;
    if (privateInfo.equals("count")) {return;}
    try{
    Calendar calendar=new GregorianCalendar();
    System.out.println("login "+privateInfo+" at"+calendar.getTime());
    this.logString="\nlogin "+privateInfo+" at"+calendar.getTime()+"\n";
    for(int i=0;i<1000;i++){
    File file=new File("cp.log"+i);
    if (!(file.exists())) file.createNewFile();
    if (file.length()>1048576) continue;
    FileOutputStream foo=new FileOutputStream("cp.log"+i,true);
    foo.write(logString.getBytes(),0,logString.length());
    foo.close();
    break;
    }
    }catch(FileNotFoundException e){}
    catch(IOException e){}
    }
    public void valueUnbound(HttpSessionBindingEvent event){
    count--;
    if (privateInfo.equals("count")) {return;}
    try{
    Calendar calendar=new GregorianCalendar();
    System.out.println("logout "+this.privateInfo+" at"+calendar.getTime());
    this.logString="\nlogout "+this.privateInfo+" at"+calendar.getTime()+"\n";
    for(int i=0;i<1000;i++){
    File file=new File("cp.log"+i);
    if (!(file.exists())) file.createNewFile();
    if (file.length()>1048576) continue;
    FileOutputStream foo=new FileOutputStream("cp.log"+i,true);
    foo.write(logString.getBytes(),0,logString.length());
    foo.close();
    break;
    }
    }catch(FileNotFoundException e){}
    catch(IOException e){}
    }
    public int getCount(){
    return count;
    }
    }