jsp里,我怎么知道我的一个b/s应用里有多少在线人数呢?session嘛? 最好的办法是使用HttpSessionListener监听器,在sessionCreated方法里面将计数器加1,在sessionDestroyed里减1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import javax.servlet.http.HttpSessionListener;import javax.servlet.http.HttpSessionEvent;/** * * @author Denny */public class MySession implements HttpSessionListener { public MySession() {} private static int activeSessions = 0; public void sessionCreated(HttpSessionEvent se) { activeSessions++; System.out.println("Created: " + se.getSession().getId()+ " : " + new java.util.Date(se.getSession().getCreationTime())); System.out.println("Created: " + activeSessions); } public void sessionDestroyed(HttpSessionEvent se) { System.out.println("Destroyed: " + se.getSession().getId()+ " : " + new java.util.Date(se.getSession().getCreationTime())); System.out.println("Destroyed: " + activeSessions); if (activeSessions > 0 ) activeSessions--; } public static int getActiveSessions() { return activeSessions; }}我模仿写了这个程序,我该怎么用它呢?当javabean嘛?需要放在首页面?还需要其他配置吗? sessionDestroyed(...)不能在关闭窗口时把session注销,但可自然注销(系统设定的时间),所以这个方法不行啊,不准确。有没有能准确统计在线人数的好方法啊?解决了多多送分。高手指教... 当javabean用,需要在web.xml文件丽配一下:<listener> <listener-class>MySession</listener-class> </listener> 然后再jsp里调用getActiveSessions方法。有没有能准确统计在线人数的好方法啊?据我所知,好像没有,你看一下jsp做的论坛,都不是你一关浏览器救注销的,你关了后马上在打开时,你还是在线,如果你要准确一点的,我可以教你一个笨办法,在数据库在线表里加上个字段,在线时间,在每个页面都加上如下判断:1、对于请求该页面的用户,更新在线时间为当前时间。2、对于其他用户,比较在线时间和当前时间,如果差值大于某个值,比如1分钟,将该用户从在线表中删除。 用一个application,然后累加session,每次session失效或退出系统是减掉application中相应的session就行了 session的注销问题 请教一个关于Hibernate无法获取连接池连接的问题 请求大虾们,WEB项目中如何结束对数据库上的操作? java开发的网站准备放到linux下,在开发的时候要注意什么 JSP连SQL数据库,查询不同表内容的问题 求救:如何用JAVA搜索word或者excel文件里的字符 关于jspsmartupload的问题,怎样把上传的文件保存时保存为另外一个名称啊 能不能点击某个按钮提交多个form到多个页面??????????? 我的 博客专栏之《spring入门》 简单的问题。。。。。惭愧。。。 想在广州找份java工作 100分跪求jdbc解决办法,在线等
import javax.servlet.http.HttpSessionEvent;
/**
*
* @author Denny
*/
public class MySession implements HttpSessionListener
{
public MySession()
{} private static int activeSessions = 0;
public void sessionCreated(HttpSessionEvent se)
{
activeSessions++;
System.out.println("Created: " + se.getSession().getId()+ " : " + new java.util.Date(se.getSession().getCreationTime()));
System.out.println("Created: " + activeSessions);
}
public void sessionDestroyed(HttpSessionEvent se)
{
System.out.println("Destroyed: " + se.getSession().getId()+ " : " + new java.util.Date(se.getSession().getCreationTime()));
System.out.println("Destroyed: " + activeSessions);
if (activeSessions > 0 )
activeSessions--;
}
public static int getActiveSessions()
{
return activeSessions;
}
}我模仿写了这个程序,我该怎么用它呢?当javabean嘛?需要放在首页面?还需要其他配置吗?
解决了多多送分。
高手指教...
<listener>
<listener-class>MySession</listener-class>
</listener>
然后再jsp里调用getActiveSessions方法。有没有能准确统计在线人数的好方法啊?
据我所知,好像没有,你看一下jsp做的论坛,都不是你一关浏览器救注销的,你关了后马上在打开时,你还是在线,如果你要准确一点的,我可以教你一个笨办法,在数据库在线表里加上个字段,在线时间,在每个页面都加上如下判断:
1、对于请求该页面的用户,更新在线时间为当前时间。
2、对于其他用户,比较在线时间和当前时间,如果差值大于某个值,比如1分钟,将该用户从在线表中删除。