问题1:
在jsp中如何得到服务器的所有session对象,注意,当你访问服务器的时候一般你得到的只是你自己的session对象,我查找了API但只找到得到自己的session对象,如何得到服务器的所有session对象。
问题2:
如何监听指定session的销毁及对象的销毁,如果该session过了web.xml的时间限制则服务器会自动销毁,如何监听销毁的这个时间,并在之前执行一段代码。
问题3:
大家都知道浏览器访问页面服务器会创建session,并给予客户端一个sessionID,如果客户端所有浏览器关闭是否证明该客户端sessionID销毁,再次登陆网站的时候服务器又会创建一个session并分配给客户端一个sessionID,如果不是服务器自己销毁session,是否只有到达时间限制后session在自动销毁。
本问题50分,另加本人的其他两张贴(每张贴100分)一直没结,所以一共250分,本贴问题答完后在另外两个贴随意回复既在结贴时给分!!
两张贴地址:
http://community.csdn.net/Expert/topic/5249/5249395.xml?temp=.774563
http://community.csdn.net/Expert/topic/5249/5249412.xml?temp=.8341944

解决方案 »

  1.   

    实现HttpSessionListener
    在web.xml注册这个listener
    再定义一个静态变量
    当sessionCreate的时候把session放进去
    当sessionDestroy的时候把session移除
      

  2.   

    public class SessionListen implements HttpSessionListener { /* (非 Javadoc)
     * @see javax.servlet.http.HttpSessionListener#sessionCreated(javax.servlet.http.HttpSessionEvent)
     */
    public void sessionCreated(HttpSessionEvent arg0) {
    // TODO 自动生成方法存根
    } /* (非 Javadoc)
     * @see javax.servlet.http.HttpSessionListener#sessionDestroyed(javax.servlet.http.HttpSessionEvent)
     */
    public void sessionDestroyed(HttpSessionEvent event) 
    {
    HttpSession session=event.getSession();
    // TODO 自动生成方法存根
    String id=session.getId();
    try
    {
    ........
                       }
    catch(Exception e)
    {
    System.out.println(e.getMessage());

    }
    }}在web.xml <listener>
       <listener-class>包名.SessionListen</listener-class>
      </listener>
      

  3.   

    问题1:这个问题不一定要找session,我想你是做用户在线之类的功能吧,那么用户通过session有判断是否在线,你肯定在数据库或其它地方有个标识吧(如有session时数据库该字段为1,session销毁了就更改为0),那么通过这个标识也能完成你要的功能
    问题2:“如何监听销毁的这个时间,并在之前执行一段代码”这个是做不到的,因为销毁之前你根本就不能知道什么时候要销毁,但销毁了已经是之后的事了,但你可以这样试试,把session的值先传给一个变量,当监听到session销毁了,你还可以用这个变量来做你需要的事
    问题3:要不手动(通过事件触发)销毁,要不就是超出时间自动销毁
      

  4.   

    问题1:
    在jsp中如何得到服务器的所有session对象,注意,当你访问服务器的时候一般你得到的只是你自己的session对象,我查找了API但只找到得到自己的session对象,如何得到服务器的所有session对象。---------------------------
    好象没有这个方法问题2:
    如何监听指定session的销毁及对象的销毁,如果该session过了web.xml的时间限制则服务器会自动销毁,如何监听销毁的这个时间,并在之前执行一段代码。
    ---------------------------
    实现HttpSessionListener接口,其中的两个方法分别对应创建和销毁问题3:
    大家都知道浏览器访问页面服务器会创建session,并给予客户端一个sessionID,如果客户端所有浏览器关闭是否证明该客户端sessionID销毁,再次登陆网站的时候服务器又会创建一个session并分配给客户端一个sessionID,如果不是服务器自己销毁session,是否只有到达时间限制后session在自动销毁。
    ---------------------------
    是的
      

  5.   

    在问一下大家,能不能监听session的更改
      

  6.   

    难道在服务器端竟然不能查询session数量吗??tomcat有没有地方可以察到阿
      

  7.   

    把SESSION放MAP里吧。package com.yourcompany.struts.action;import javax.servlet.http.HttpSessionEvent;public class testSessionCount implements javax.servlet.http.HttpSessionListener{
    //private static int sessionCount;
    private static java.util.Map<String,javax.servlet.http.HttpSession> sessionList = new java.util.HashMap<String,javax.servlet.http.HttpSession>();
    public static int getSessionCount() {
    return sessionList.size();
    }

    public static java.util.Map getSessionList() {
    return sessionList;
    }
    public void sessionCreated(HttpSessionEvent arg0) {
    javax.servlet.http.HttpSession session = arg0.getSession();
    if(session != null) {
    sessionList.put(session.getId(), session);
    }
    } public void sessionDestroyed(HttpSessionEvent arg0) {
    javax.servlet.http.HttpSession session = arg0.getSession();

    if(session != null) {
    sessionList.remove(session.getId());
    }
    }

    }
      

  8.   

    在问一下大家,如何监听客户端sessionID与服务器端session的交互??
    意思就是说客户端第一次访问后,再刷新页面,这时候客户端会提交sessionID对吧,在这个时候,如何监听,并且获取报头(其实我想要得就是在管理端监视用户现在正在访问的页面)
      

  9.   

    我只知道,单纯关闭浏览器,服务器端相应的session还是存在的