关闭

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

473人阅读 评论(0) 收藏 举报
分类:

监听器小例子


统计同时在线人数:

每当有一个用户登录的时候在服务器端创建一个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
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

通过监听器实现在线人数统计

本文主要介绍通过servlet的监听器监听会话的创建、销毁、登录信息会话变量的设置,用于实现在线用户统计。
  • psp0001060
  • psp0001060
  • 2016-12-19 20:56
  • 971

Java监听器学习 统计当前在线人数

javax.servlet.http.HttpSession 这个类是很常用的,每当我们浏览网站,不论有没有登陆,都会产生1个session,它记录了和浏览者相关的数据; 下面介绍session的2个监听器接口: 1)javax.servlet.http.HttpSessionBindi...
  • LiMing_0820
  • LiMing_0820
  • 2016-12-01 20:23
  • 370

jsp监听器实现在线人数统计

在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存在一些缺点,例如:用户正常登录后,可能会忘记点击退出按钮,而直接关闭浏览器,导致计数器减1的操作没有及时执行;网站上还...
  • liuao107329
  • liuao107329
  • 2014-11-15 15:18
  • 1500

Servlet监听器,统计网站在线人数实例

(1)创建一个监听器实现类 package com.web.listener; import java.util.LinkedList; import java.util.List; import javax.servlet.ServletContext; import...
  • jeanFlower
  • jeanFlower
  • 2016-07-26 14:42
  • 940

Servlet监听器——实现在线登录人数统计小例子

一、概念 servlet监听器的主要目的是给web应用增加事件处理机制,以便更好的监视和控制web应用的状态变化,从而在后台调用相应处理程序。 二、监听器的类型 1.根据监听对象的类型和范围,分为3类 Request事件监听器 HttpSession事件监听器 ServletContext事件监听...
  • rongxiang111
  • rongxiang111
  • 2016-12-06 16:37
  • 1759

HttpSessionListener实现网站在线人数统计

在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存在一些缺点,例如:用户正常登录后,可能会忘记点击退出按钮,而直接关闭浏览器,导致计数器减1的操作没有及时执行;网站上还...
  • g893465244
  • g893465244
  • 2014-11-05 18:11
  • 1821

servlet监听完成统计在线人数,显示在线人员列表(附源码)

ServletContext事件监听器---->针对applicationScope  ServletContextListener(*) 对整个Web应用的装载和卸载进行监听。  ServletContextAttributeListener 对ServletContex...
  • weixin_36380516
  • weixin_36380516
  • 2017-04-12 17:00
  • 1785

session监听器(可用于统计在线人数,了解系统当前的使用客户 ...

servlet中对session的监听有很多接口,功能很灵活,最常用的是监听Session和Attribute。这里要澄清一下概念,servlet中的session监听和Attribute监听含义有差别,session监听指的不是我们一般所理解的放置一个session或者销毁一个session,这是...
  • mywordandyourword
  • mywordandyourword
  • 2014-02-05 10:44
  • 1287

Java监听器学习 统计当前在线人数

javax.servlet.http.HttpSession 这个类是很常用的,每当我们浏览网站,不论有没有登陆,都会产生1个session,它记录了和浏览者相关的数据; 下面介绍session的2个监听器接口: 1)javax.servlet.http.HttpSessionBindi...
  • DD_lemon
  • DD_lemon
  • 2016-01-08 09:44
  • 1130

javaWeb 在线人数统计

1.新建一个工程OnlineCount,包结构如下图所示: demo1:新建一个OnlineCounter.java 代码如下:   package com.dr.demo2.servlet;  import javax.servlet....
  • zhangxiong0797
  • zhangxiong0797
  • 2014-03-07 09:15
  • 1342
    个人资料
    • 访问:262487次
    • 积分:5869
    • 等级:
    • 排名:第5105名
    • 原创:351篇
    • 转载:36篇
    • 译文:0篇
    • 评论:23条
    文章分类