凌云论坛 在线一段时间就会自动退出,有没有人知道这个时间是怎么控制的,在哪控制的

解决方案 »

  1.   

    session的有效期,默认半小时貌似
      

  2.   

    session 监听器HttpSessionListener
    package Servlet;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.*;
    import java.util.*;public class SessionListener  implements HttpSessionListener
    {
    private static HashMap hUserName = new HashMap();//保存sessionID和username的映射
        /**以下是实现HttpSessionListener中的方法**/
        public void sessionCreated(HttpSessionEvent se){
        }
        
        public void sessionDestroyed(HttpSessionEvent se){
            hUserName.remove( se.getSession().getId() );
        }
        /*
         * isAlreadyEnter-用于判断用户是否已经登录以及相应的处理方法
         * @param sUserName String-登录的用户名称
         * @return boolean-该用户是否已经登录过的标志
         */
        public static boolean isAlreadyEnter(HttpSession session,String sUserName){
            boolean flag = false;
            if(hUserName.containsValue(sUserName)){//如果该用户已经登录过,则使上次登录的用户掉线(依据使用户名是否在hUserName中)
                flag = true;
                int i=0;
                //遍历原来的hUserName,删除原用户名对应的sessionID(即删除原来的sessionID和username)
                Iterator iter = hUserName.entrySet().iterator();
                while (iter.hasNext()) {
                    Map.Entry entry = (Map.Entry)iter.next();
                    Object key = entry.getKey();
                    Object val = entry.getValue();
                    i++;
                    if( ( (String)val ).equals(sUserName) ){
                        hUserName.remove(key);
                    }
                }
                session.setAttribute("ii", i);
                hUserName.put( session.getId(),sUserName );//添加现在的sessionID和username
                System.out.println("hUserName = " + hUserName);
            }
            else{//如果该用户没登录过,直接添加现在的sessionID和username
                flag = false;
                hUserName.put( session.getId(),sUserName );
                System.out.println("hUserName = " + hUserName);
            }
            return flag;
        }