创建一个类,实现HttpSessionBindingListener,然后在
public void valueUnbound(HttpSessionBindingEvent event) {
//     在此方法里做用户退出时的处理
    }把此类实例化,然后放在用户的session里。用户退出时会调用valueUnbound

解决方案 »

  1.   

    我的类如下:import java.io.Serializable;
    import javax.servlet.http.*;/**
     * Database implementation of the Authorization interface.
     */
    public final class Authorization implements Serializable, HttpSessionBindingListener {    private static final long serialVersionUID = 01L;    private int userID;    /**
         * Constucts a new DbAuthorization with the specified userID.
         *
         * @param userID the userID to create an authorization token with.
         */
        protected Authorization(int userID) {
            this.userID = userID;
        }    //FROM THE AUTHORIZATION INTERFACE//    public int getUserID() {
            return userID;
        }    public boolean isAnonymous() {
            return userID == -1;
        }    /*static int loginUserCount = 0;    public static int getLoginUserCount() {
            return loginUserCount;
        }
    */
        public void valueBound(HttpSessionBindingEvent event) {
           // loginUserCount++;
        }    public void valueUnbound(HttpSessionBindingEvent event) {
           // loginUserCount--;
            UserLoginManage.remove(userID);
            //System.out.println("userID:"+userID);
            LogManage.addLog(new Log(userID,UserManage.getUser(userID).getUnitID(),"",null,
                        "login.jsp?logout=true","离开","UserLogin",0,"","session过期,自动离开",0));
        }
    }