如何通过session监视访问我的站点的人数以及如何设置最大的链接数,让系统检测到超过这个数就会转到一个提示页面提醒稍后再联,谢谢了,

zhuanr 2003-08-12 06:30:24
如何通过session监视访问我的站点的人数以及如何设置最大的链接数,让系统检测到超过这个数就会转到一个提示页面提醒稍后再联,谢谢了,在线!!!我用的系统是jsp+weblogic 6.1,希望高手能给指点一下,小弟真是火烧眉毛了!!
...全文
24 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ychunshui 2003-09-17
  • 打赏
  • 举报
回复
好像不能解决关闭浏览器马上销毁session的问题.

是否有不用session统计在线用户的方法.
sujianhua 2003-09-01
  • 打赏
  • 举报
回复
如果这个问题不解决,则统计人数将没太大意义
sujianhua 2003-09-01
  • 打赏
  • 举报
回复
public void sessionDestroyed(HttpSessionEvent se) {
if(activeSessions > 0) //每销毁一个新的session就 减1
activeSessions--;
}

是自动调用销毁吗?都什么时候调用,如果 直接关闭浏览器,直接关机能判断吗?
是不是要等session过期才可以减一啊
patrickjava 2003-08-22
  • 打赏
  • 举报
回复
收藏
ccmoon 2003-08-14
  • 打赏
  • 举报
回复
gz
现在在作asp的项目
我现在就不献丑了
呵呵,帮你们顶顶
ccmoon 2003-08-13
  • 打赏
  • 举报
回复
注:我写文档可没有这么全得
SessionListener
你的服务器要支持才可以
这好像是servlet2.2标准得
这是我以前做的时候从别的网站找得
推荐几个网站给你,java特别专业的东西,csdn很难找到
http://forum.java.sun.com/
http://www-900.ibm.com/developerWorks/cn/java/
http://www.java.com.cn/
http://www.javaresearch.org/
www.jdon.com
Martin2002 2003-08-13
  • 打赏
  • 举报
回复
如果你的web服务器,支持servlet2.3或更高标准的话,servlet提供了监听session创建,和释放已经application创建和释放的事件,你可以在这些事件中进行你的判断。如果人数超过了预设的session数目,就转向错误页面
wkliangsdqd 2003-08-13
  • 打赏
  • 举报
回复
学习!!
zyp80 2003-08-13
  • 打赏
  • 举报
回复
to ccmoon(IzuaL) :后面的注释是你自己写的么?写的太好了,太专业了,呵呵
zyp80 2003-08-13
  • 打赏
  • 举报
回复
你就直接用就可以了,系统类,
to ccmoon(IzuaL):这个东西真是不错
贴主可以申请加入FAQ了,呵呵
youfly 2003-08-13
  • 打赏
  • 举报
回复
session?可以吗?
zhuanr 2003-08-13
  • 打赏
  • 举报
回复
to ccmoon(IzuaL) :
请问,SessionListener是你自己写的一个class文件吗?或者是系统类?小弟这里还是不清楚

to 9731boy(杯子) :
能给一点思路吗?谢谢
zhuanr 2003-08-13
  • 打赏
  • 举报
回复
to luckyfanjian(luckyfan):
如何知道此时已经达到最大的链接数了呢?请指教,小弟我是用的链接池,但是不知道如何获取当前的链接数呀?
wellsoon 2003-08-13
  • 打赏
  • 举报
回复
SessionListener

+

Filter

用SessionListener来记录连接数目,

在dofilter里判断连接数目,
如果已经达到最大值,则给出相应处理。



.用listener实现在线人数统计.

package beanservlettest;//除了其中三行代码,其余均由Jbuilder自动生成

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class sessioncount extends HttpServlet implements ServletContextListener, ServletContextAttributeListener, HttpSessionListener, HttpSessionAttributeListener {
private static int activeSessions = 0;
public void contextInitialized(ServletContextEvent sce) {

}

public void contextDestroyed(ServletContextEvent sce) {

}
public void attributeAdded(ServletContextAttributeEvent scab) {

}
public void attributeRemoved(ServletContextAttributeEvent scab) {

}
public void attributeReplaced(ServletContextAttributeEvent scab) {

}
public void sessionCreated(HttpSessionEvent se) {
activeSessions++;//每创建一个新的session就 加1
}
public void sessionDestroyed(HttpSessionEvent se) {
if(activeSessions > 0) //每销毁一个新的session就 减1
activeSessions--;
}
public void attributeAdded(HttpSessionBindingEvent se) {

}
public void attributeRemoved(HttpSessionBindingEvent se) {
}

public void attributeReplaced(HttpSessionBindingEvent se) {
}
public static int getActiveSessions() {
return activeSessions;
}

}


web.xml里的配置如下:

<listener>
<listener-class>beanservlettest.sessioncount</listener-class>
</listener>

jsp测试页面:

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="beanservlettest.sessioncount" %>

<html>
<head>
<title>
sc
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
当前在线人数有<%=sessioncount.getActiveSessions()%>人。
</body>
</html>
<a href= "logout.jsp">注销</a>



至于filter里的操作,呵呵,我还在学习之中。

ccmoon 2003-08-12
  • 打赏
  • 举报
回复
登录人数的统计:
ServletContext session1=getServletConfig().getServletContext();//取得ServletContext对象实例
if((SessionListener)session1.getAttribute("listener1")==null)
{
SessionListener sessionListener1=new SessionListener("count");//只设置一次,不同于上面日志文件的记录每次会话均设置。即当第一个客户连接到服务器时启动一个全局变量,此后所有的客户将使用相同的上下文。
session1.setAttribute("listener1",sessionListener1);//将监听器对象设置成ServletContext的属性,具有全局范围有效性,即所有的客户均可以取得它的实例。
}
session.setAttribute("listener1",(SessionListener)session1.getAttribute("listener1"));//取出此全局对象,并且将此对象绑定到某个会话中,此举将促使监听器调用valueBound,计数器加一。
在此后的程序中随时可以用以下代码取得当前的登录人数:
((SessionListener)session.getAttribute("listener1")).getCount()
getCount()是监听器的一个方法,即取得当前计数器的值也就是登录人数了。
luckyfanjian 2003-08-12
  • 打赏
  • 举报
回复
weblogic由连接池的的吧,你可用连接池来判断,当连接达到最大的时候,就转向!
9731boy 2003-08-12
  • 打赏
  • 举报
回复
application 是应用于全局的..session不行吧...
9731boy 2003-08-12
  • 打赏
  • 举报
回复
session?

:)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧