java在线人数统计代码 Java统计

如何实现java 用户在线实时统计

您好,这样:

成都创新互联专注于潮南网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供潮南营销型网站建设,潮南网站制作、潮南网页设计、潮南网站官网定制、小程序制作服务,打造潮南网络公司原创品牌,更为您提供潮南网站排名全网营销落地服务。

通过SessionListenr可以监听session的创建和销毁,所以首先要写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCreated()、sessionDestroyed()方法:

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);

}

}

然后再在web.xml中分别配置SessionListener和session超时时间(10分钟):

listener

listener-class全路径MySessionListener/listener-class

/listener

session-config

session-timeout10/session-timeout

/session-config

最后在Jsp页面代码使用以下代码就可以实现当前在线人数统计输出:

java在线人数问题

首先给你讲一下,我的理解,人数统计好说,因为,可已设置监听器,让其在服务器启动的时候进行监听,然后统计登录人数,但是统计在线人数,就麻烦点了,因为大多数人都不愿意点击注销按钮,直接关闭浏览器,这样session的关闭就麻烦了点,我先给出统计人数的代码,我想统计在线人数可以定时调用程序来统计,但是不是实时的,所以最大的障碍就是怎么在关闭浏览器的时候,就关闭session

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Scanner;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class ApplicationListener implements ServletContextListener{

public void contextDestroyed(ServletContextEvent arg0) {

ServletContext sc = arg0.getServletContext();

Integer count = (Integer) sc.getAttribute("AccessCount");

try {

PrintWriter out = new PrintWriter(new FileWriter("c:/Users/god/count.txt"));// 将人数保存到文本文件

System.out.println("count:"+count);

out.print(count);

out.flush();

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

public void contextInitialized(ServletContextEvent arg0) {

Integer count = 0;

ServletContext sc = arg0.getServletContext();

try {

Scanner in = new Scanner(new FileReader("c:/Users/god/count.txt"));// 读取已经产生的人数信息,然后进行累加

count = in.nextInt();

in.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

sc.setAttribute("AccessCount", count);

}

}

在web.xml文件里面进行设置

listener

listener-class

文件的位置也就是包名.ApplicationListener

/listener-class

/listener

统计的时候是设置拦截器,需要在struts.xml中设置

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.Interceptor;

@SuppressWarnings("serial")

public class AccessInterceptor implements Interceptor{

private String id;

public void destroy() {

}

public void init() {

}

@SuppressWarnings("unchecked")

public String intercept(ActionInvocation ai) throws Exception {

ServletContext sc = ServletActionContext.getServletContext();

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

if(!session.getId().equals(id)){

Integer count = (Integer) sc.getAttribute("AccessCount");// 判断如果登录成功,统计数字自增

sc.setAttribute("AccessCount", count+1);

id = session.getId();

}

String result = ai.invoke();

return result;

}

}

JAVA如何统计人数(接着下面的程序写)

在类中声明一个静态变量如下 :

static int num=0 ,每次类初始化将num 加一。

静态变量为所有类共享,num的大小即为创建的student对象的数目

程序稍微改动如下:

class student {

String name;

static int num =0;

String id;

float ywscore;

float sxscore;

float sumscore;

float avgscore;

student(String name,String id,float ywscore,float sxscore){

this.name=name;

this.id=id;

this.ywscore=ywscore;

this.sxscore=sxscore;

num ++;

}

float sum(){

sumscore=sxscore+ywscore;

return sumscore;

}

float avg(){

avgscore=(sxscore+ywscore)/2;

return avgscore;

}

int getNum()

{

return num;

}

void showinfo(){

System.out.println("name: "+name);

System.out.println("id: "+id);

System.out.println("mathscore: "+sxscore);

System.out.println("langue: "+ywscore);

System.out.println("avg: "+avg());

System.out.println("sum: "+sum());

}

};

求一个java代码:浏览器被关闭时(非正常关闭)能够正确的统计在线人数

正确是做不到,只能是估计,需要你定义一个阀值,估计它的取值,然后与你统计的在线人数相乘,得到一个近似值即可!~

java 怎样统计系统当前在线人数

统计在线人数的方式不同(比如登录人数或者页面访问人数)具体的实现方式不同,但是记录统计人数的方法是一样的1。定义一个静态变量或者在application作用于放置一个变量存放在线人数,如果是登录人数,则在用户登录时+1,如果是页面访问人数就添加一个监听器listener进行监听(sessionId) 如果有用户访问页面就+1


当前标题:java在线人数统计代码 Java统计
链接地址:http://scyanting.com/article/hihjhg.html