「java统计网站在线人数」javaweb统计网站访问人数
本篇文章给大家谈谈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统计网站访问人数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-22,除非注明,否则均为
原创文章,转载请注明出处。