session 有效时间设为4个小时,如何准确统计当前在线人数 session 有效时间设为4个小时,实现HttpSessionListener对session进行相关处理,如何相对准确的统计当前在线人数。现在问题是session设为4个小时,用户10几个小时后都没有失效 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.HashSet;import javax.servlet.ServletContext;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener; public class MySessionListener implements HttpSessionListener { public void sessionCreated(HttpSessionEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 在application范围由一个HashSet集保存所有的session HashSet sessions = (HashSet) application.getAttribute("sessions"); if (sessions == null) { sessions = new HashSet(); application.setAttribute("sessions", sessions); } // 新创建的session均添加到HashSet集中 sessions.add(session); // 可以在别处从application范围中取出sessions集合 // 然后使用sessions.size()获取当前活动的session数,即为“在线人数” } public void sessionDestroyed(HttpSessionEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); HashSet sessions = (HashSet) application.getAttribute("sessions"); // 销毁的session均从HashSet集中移除 sessions.remove(session); }} 问题就是session有效期长了之后sessionDestroyed方法时间,从昨天设session有效期为4个小时的测试来看它10多个小时都没调用 package com.totyustar.action.cartoonoriginality.servlet;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class OnlinePersonSessionListener implements HttpSessionListener { private static long online = 0; public void sessionCreated(HttpSessionEvent hse) { online = online +1; } public void sessionDestroyed(HttpSessionEvent hse) { online = online - 1; } //获取当前session有效数 public static long getOnline() { if(online<0) return 0; return online; }} 这个方法我会用,现在问题是sessionDestroyed,在session有效期为4小时的情况下,监听触发的时间不对 如何从数据库获取包含同一字段的所有信息,并在JSP页面显示出来? 求:JAVA实现:不同用户登录同一系统,页面不同的实现方法 终于拿到了大红花了,发表下自己的感言 jsf可以读取js的返回值吗? 请教一问题,帮帮忙啊 求助,有没有免费而且功能比较完善的BBS开放代码(JSP的 ) 能否推荐几本学习jsp的好书 谁有isapi_redirector.dll这个文件,急需! 晕了!!session怎么不起作用啊??? 各位大侠那位有会员管理的例子!!! 简单的缓存问题,请大家帮忙解决一下,怎么样清除;谢谢; frameset跳转
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
// 在application范围由一个HashSet集保存所有的session
HashSet sessions = (HashSet) application.getAttribute("sessions");
if (sessions == null) {
sessions = new HashSet();
application.setAttribute("sessions", sessions);
}
// 新创建的session均添加到HashSet集中
sessions.add(session);
// 可以在别处从application范围中取出sessions集合
// 然后使用sessions.size()获取当前活动的session数,即为“在线人数”
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
HashSet sessions = (HashSet) application.getAttribute("sessions");
// 销毁的session均从HashSet集中移除
sessions.remove(session);
}
}
import javax.servlet.http.HttpSessionListener;public class OnlinePersonSessionListener implements HttpSessionListener
{
private static long online = 0;
public void sessionCreated(HttpSessionEvent hse) {
online = online +1;
}
public void sessionDestroyed(HttpSessionEvent hse) {
online = online - 1;
}
//获取当前session有效数
public static long getOnline() {
if(online<0)
return 0;
return online;
}
}