「java统计网站在线人数」javaweb统计网站访问人数

博主:adminadmin 2022-12-22 16:06:09 60

本篇文章给大家谈谈java统计网站在线人数,以及javaweb统计网站访问人数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

用户表里面加一个字段status

当用户上线以后,就把status设置为1

统计在线人数就是一条sql语句:

select count(*) from 用户表 where status = 1

java统计在线用户受什么影响

答:1、实现接口类,在web.xml文件中配置监听类,从而可以使该类完成其工作。publicclassSessionListenerimplementsHttpSessionAttributeListener{publicvoidattributeAdded(HttpSessionBindingEventevent){if(event.getName().equals("userid")){try{OnlineCounter.doUser(event.getValue(),false);}catch(Exceptione){e.printStackTrace();}}}publicvoidattributeRemoved(HttpSessionBindingEventevent){if(event.getName().equals("userid")){try{OnlineCounter.doUser(event.getValue(),true);}catch(Exceptione){e.printStackTrace();}}}publicvoidattributeReplaced(HttpSessionBindingEventevent){}}2、要做的就是实现任务类OnlineCounter了publicclassOnlineCounter{privatestaticListlist=newArrayList();privatestaticListlist1=newArrayList();privateOnlineCounter(){}//统计当前在线会员人数publicstaticvoiddoUser(Objectobject,booleanbl){//得到用户当前访问时间Stringnowtime=getTime("mm:ss");//Str数组用来存放用户的id和访问时间String[]str=newString[2];str[0]=object.toString();str[1]=nowtime;//temp数组用来临时存放从list里面取出的用户的id和访问时间String[]temp=newString[2];//循环listfor(inti=0;ilist.size();i++){temp=(string[])list.get(i); 如果从list里面取出的用户ip和str里面存放的id相同,则更新访问时间if(bl="=falsetemp[0].equals(str[0])){list.set(i,str);return;}//如果监听类中穿过来bl==true,则认为不在线if(bl==truetemp[0].equals(str[0])){list.remove(i);}}//添加一个新的在线用户if(bl==false)list.add(str);//释放资源str=null;temp=null;}//统计网站所有在线人数publicstaticvoidallUser(Objectobject){//得到用户当前访问时间Stringnowtime=getTime("mm:ss");//Str数组用来存放用户得ip和访问时间String[]str=newString[2];str[0]=object.toString();str[1]=nowtime;//temp数组用来临时存放从list里面取出的用户ip和访问时间String[]temp=newString[2];//循环listfor(inti=0;ilist1.size();i++){temp=(String[])list1.get(i);//如果从list里面取出的用户ip和str里面存放的ip相同,则更新访问时间if(temp[0].equals(str[0])){list1.set(i,str);return;}

java怎么实统计在线人数,和访问量

简单的说个我的思路供你借鉴:

在线人数,我理解为当前应用的session数目,不过sevlert好像不提供获取全部session的方法,可以通过加一个sessionlistener来记录(创建就+1,销毁就-1)

访问量相对简单,你定义一个全局的计数器就好了,来一个(这个有很多种方法,比如:有一个新的session被创建)人你就+1

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统计网站在线人数和javaweb统计网站访问人数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。