javaweb之统计在线的人数(利用监听器)

 如果对监听器不了解的话,可以参看下面这个CSDN

https://blog.csdn.net/qq_41901915/article/details/86477771

第一个文件,用来监听项目的开始,一旦这个项目开启了,那么我就初始化一个参数,count1,把它存到域中

package tools;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class Mycontextlistener implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		ServletContext c=sce.getServletContext();
		c.setAttribute("count1", 0);
		System.out.println("项目在线访问人数初始化完成");
	}

}

第二个文件,一旦访问的话我就获取那个域对象,让它的数量+1,关掉的话就让它-1

package tools;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class Myhttpsessionlistener implements HttpSessionListener{

	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		HttpSession session=se.getSession();
		ServletContext c=session.getServletContext();
		int count=(int) c.getAttribute("count1");
		count++;
		c.setAttribute("count1", count);
		System.out.println("增加1");
	}

	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		HttpSession session=se.getSession();
		ServletContext c=session.getServletContext();
		int count=(int) c.getAttribute("count1");
		count--;
		c.setAttribute("count1", count);
		System.out.println("减少1");
	}

}

第三个文件,然后再jsp页面进行显示

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>当前在线人数为:${ applicationScope.count1 }</h3>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_41901915/article/details/86492531