监听器小例子之统计在线人数

监听器小例子


统计同时在线人数:

每当有一个用户登录的时候在服务器端创建一个session对象,写一个监听器,监听session的创建与销毁,每当创建一个session对象的时候就把计数器+1,然后保存到servletContext对象上,每当有一个用户下线的时候就销毁对应的session对象,把计数器-1,保存到servletContext上。

CountListener.java代码:


package web;

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

public class CountListener implements HttpSessionListener{
	private int count = 0; //计数器
	
	/**
	 * session对象创建之后,容器会产生HttpSessionEvent事
	 * 件,然后调用sessionCreated方法。
	 */
	public void sessionCreated(HttpSessionEvent arg0) {
		System.out.println("sessionCreated start ...");
		count ++;
		//通过事件对象(HttpSessionEvent)找到session
		HttpSession session = arg0.getSession();
		ServletContext sctx = session.getServletContext();
		//将人数count绑定到servletContext,这样,可以随时访问。
		sctx.setAttribute("count",count);
	}

	/**
	 * 容器在销毁session对象之后,会调用sessionDestroyed方
	 * 法。
	 */
	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("sessionDestoyed start ...");
		count --;
		//通过事件对象(HttpSessionEvent)找到session
		HttpSession session = arg0.getSession();
		ServletContext sctx = session.getServletContext();
		//将人数count绑定到servletContext,这样,可以随时访问。
		sctx.setAttribute("count",count);
	}

}


logout.jsp

因为关闭浏览器并不能销毁对应的session对象,故手动删除对应的session对象。

<%
	session.invalidate();
%>



index.jsp

<body>
  	<h1>hello</h1>
    This is my JSP page. <br>
    <!-- ServletContext == application -->
    在线人数:<%=application.getAttribute("count") %><br/>
    <a href="logout.jsp">退出系统</a>
  </body>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!-- 配置文件先后顺序    一般是:-->
  <!-- 全局参数->过滤器->监听器->servlet、servlet-mapping->错误处理页面  -->
  <!-- 全局初始化参数 -->
  <context-param>
  	<param-name>company</param-name>
  	<param-value>hello</param-value>
  </context-param>
  <!-- 监听器 -->
  <listener>
  	<listener-class>web.CountListener</listener-class>
  </listener>
  <!-- 首页  http://ip:port/appname -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

小知识:

 配置文件先后顺序    一般是:

   全局参数->过滤器->监听器->servlet、servlet-mapping->错误处理页面
 


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值