我在用户登陆页面将每个用户的ID使用session保存下来,例如: session.setAttribute("UserID","ytang");我如何将所有用户登陆的这些session值一一取出来

解决方案 »

  1.   

    我现在想做一个类似论坛的在线人员列表的功能,不知道使用session是否能做到
    还是把登陆的人员信息保存到数据库中???
      

  2.   

    对session进行侦听,只要正常登入,就把用户名存入系统的一个类(可以做成HashMap) session失效时则从表中移除,这样应该就能实现你的功能了.
      

  3.   

    我想问楼上一个问题:“怎么才能知道一个Session已经被关闭了,监听程序怎么才能监听到Session的失效状态(30分钟以内)?”如果不能监听到Session的状态,那有和从谈起自HashMap中移除呢?如果你能很好的解决这个问题请通知我,不胜感谢。我的地址[email protected]
      

  4.   

    对session进行侦听,只要正常登入,就把用户名存入系统的一个类(可以做成HashMap) session失效时则从表中移除,这样应该就能实现你的功能了.说的每错,如果你不知道如何侦听session去google.com将session失效时间设置少一点,让网页自动刷新……
      

  5.   


    import javax.servlet.ServletContextAttributeEvent;
    import javax.servlet.ServletContextAttributeListener;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.ServletRequestAttributeEvent;
    import javax.servlet.ServletRequestAttributeListener;
    import javax.servlet.ServletRequestEvent;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.http.HttpSessionActivationListener;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionBindingListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;public class S implements ServletContextAttributeListener, ServletContextListener, HttpSessionActivationListener, HttpSessionAttributeListener, HttpSessionBindingListener, HttpSessionListener, ServletRequestListener, ServletRequestAttributeListener {
    /* (non-Java-doc)
     * @see java.lang.Object#Object()
     */
    public S() {
    super();
    } /* (non-Java-doc)
     * @see javax.servlet.ServletContextAttributeListener#attributeAdded(ServletContextAttributeEvent arg0)
     */
    public void attributeAdded(ServletContextAttributeEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletContextAttributeListener#attributeRemoved(ServletContextAttributeEvent arg0)
     */
    public void attributeRemoved(ServletContextAttributeEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletContextAttributeListener#attributeReplaced(ServletContextAttributeEvent arg0)
     */
    public void attributeReplaced(ServletContextAttributeEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletContextListener#contextInitialized(ServletContextEvent arg0)
     */
    public void contextInitialized(ServletContextEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletContextListener#contextDestroyed(ServletContextEvent arg0)
     */
    public void contextDestroyed(ServletContextEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionActivationListener#sessionWillPassivate(HttpSessionEvent arg0)
     */
    public void sessionWillPassivate(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionActivationListener#sessionDidActivate(HttpSessionEvent arg0)
     */
    public void sessionDidActivate(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent arg0)
     */
    public void attributeAdded(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent arg0)
     */
    public void attributeRemoved(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent arg0)
     */
    public void attributeReplaced(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionBindingListener#valueBound(HttpSessionBindingEvent arg0)
     */
    public void valueBound(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent arg0)
     */
    public void valueUnbound(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionListener#sessionCreated(HttpSessionEvent arg0)
     */
    public void sessionCreated(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.http.HttpSessionListener#sessionDestroyed(HttpSessionEvent arg0)
     */
    public void sessionDestroyed(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletRequestListener#requestDestroyed(ServletRequestEvent arg0)
     */
    public void requestDestroyed(ServletRequestEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletRequestListener#requestInitialized(ServletRequestEvent arg0)
     */
    public void requestInitialized(ServletRequestEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletRequestAttributeListener#attributeAdded(ServletRequestAttributeEvent arg0)
     */
    public void attributeAdded(ServletRequestAttributeEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletRequestAttributeListener#attributeRemoved(ServletRequestAttributeEvent arg0)
     */
    public void attributeRemoved(ServletRequestAttributeEvent arg0) {
    // TODO Auto-generated method stub
    } /* (non-Java-doc)
     * @see javax.servlet.ServletRequestAttributeListener#attributeReplaced(ServletRequestAttributeEvent arg0)
     */
    public void attributeReplaced(ServletRequestAttributeEvent arg0) {
    // TODO Auto-generated method stub
    }}
      

  6.   


    request.getSession().getAttribute("id")
      

  7.   

    /*
     * Created on 2005-3-4
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package listerner;
    import javax.servlet.http.*;
    import java.util.*;
    /**
     * @author panguozhang
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class SessionListener implements HttpSessionListener{
        //映射表,存储sessionID与用户名之间的映射关系
        public static HashMap hUserName=new HashMap();
        //HttpSessionListener接口的方法
        public void sessionCreated(HttpSessionEvent se){    
        }
        public void sessionDestroyed(HttpSessionEvent se){
            hUserName.remove(se.getSession().getId());
        }
        //判断用户是否已经登陆
        public static boolean isAlreadyEntered(HttpSession session,String sUserName){
            boolean flag=false;
            if(hUserName.containsValue(sUserName)){
                flag=true;
                Iterator iter=hUserName.entrySet().iterator();
                while(iter.hasNext()){
                    Map.Entry entry=(Map.Entry)iter.next();
                    Object key=entry.getKey();
                    Object value=entry.getValue();
                    if(((String)value).equals(sUserName)){
                        hUserName.remove(key);
                    }
                }
                hUserName.put(session.getId(),sUserName);
                System.out.println("sUserName:"+sUserName);
            }
            else{
                flag=false;
                hUserName.put(session.getId(),sUserName);
                System.out.println("sUserName:"+sUserName);
            }
            return flag;
        }
        //判断用户是否在线
        public static boolean isOnline(HttpSession session){
            boolean flag=true;
            if(hUserName.containsKey(session.getId())){
                flag=true;
            }
            else{
                flag=false;
            }
            return flag;
        }
    }