[code="java"]在servlet里有如下一句话。
HttpSession session = request.getSession();
session.setMaxInactiveInterval(5);
session.setAttribute("" + session.getId() + "", new OnLineCount());// 目的:触发监听器 5秒后销毁
问题一:第三句 session.setAttribute("");我没理解, 我就只把要保存的值放到域中,而且还是放在第二个参数后 就是new onLineCount()的位置.
现在这句话的含义是什么呢??
我在触发HttpSessionListener监听器的时候 sessionDestroyed()中
问题二:arg0.getSession().removeAttribute(arg0.getSession().getId()); //删除sessionID
有这句话 要删除 sessionID
成功了 但是我不是太理解 能帮我解答下 (问题一)的含义 以及 (问题二) 是如何获得sessionID的么?[/code]
[code="java"]session.setAttribute("" + session.getId() + "", new OnLineCount());[/code]
就是把值保存到session范围中,key是当前session的id,值是你new的 OnlineCount()对象
[quote]arg0.getSession().removeAttribute(arg0.getSession().getId());
(问题二) 是如何获得sessionID的么?[/quote]
arg0是sessionDestroyed这个方法的第一个参数,其实就是一个HttpSevletRequest对象,然后通过这个对象获得当前的Session,再通过Session获得session的id,这样就可以把先前已当前session 的id为key的对象从session会话中移除.
session.setAttribute("" + session.getId() + "", new OnLineCount());// 其实没必要用""+session.getId(),因为session.getId()得到的本来就是一个字符串,
它这是以session.getId()为key,new onLineCount()为值存放在session中,
看名称好像是用来看一个session.getId()对应的在线人数,
arg0.getSession().removeAttribute(arg0.getSession().getId()); 这个就是当此session要销毁的时候得到当前的session然后把存放在这个session中的对应的sessionId的键值对删除