使用ServletContextListener和HttpSessionListener两种监听器实现记录当前网站在线人数
web.xml中配置:
<listener>
    <listener-class>com.mcm.listener.ServletContextListenerImpl</listener-class>
   </listener>
   <listener>
    <listener-class>com.mcm.listener.HttpSessionListenerImpl</listener-class>
   </listener>
ServletContextListenerImpl类:
package com.mcm.listener;
import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
public class ServletContextListenerImpl implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
   ServletContext application = event.getServletContext();
   application.removeAttribute("onLineNum");
 }
public void contextInitialized(ServletContextEvent event) {
   int num = 0;
   ServletContext application = event.getServletContext();
   application.setAttribute("onLineNum", num);
 }
}
HttpSessionListenerImpl类:
package com.mcm.listener;
import javax.servlet.ServletContext;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
public class HttpSessionListenerImpl implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
   ServletContext application = event.getSession().getServletContext();
   Integer num = (Integer) application.getAttribute("onLineNum");
   if(num != null){
    int count = num;
    count = count + 1;
    application.setAttribute("onLineNum", count);
   }
  }
public void sessionDestroyed(HttpSessionEvent event) {
   ServletContext application = event.getSession().getServletContext();
   Integer num = (Integer) application.getAttribute("onLineNum");
   int count = num;
   count = count - 1;
   application.setAttribute("onLineNum", count);
   
  }
}
index.jsp中:
当前在线人数:${onLineNum }
结果:
使用ServletContextListener和HttpSessionListener两种监听器实现记录当前网站在线人数的更多相关文章
- map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
		
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
 - Table的两种处理方法记录
		
简单记录一下,方便以后参考:基于JQuery实现 一种是滚轮,一种是翻页 滚轮的代码实现: <div class="col-md-12" style="width: ...
 - Linux小技巧之:两种方法统计访问web网站的前10个IP
		
获得访问前10位的IP地址: 10.46.170.7 218.202.70.147 77.72.83.87 5.39.217.107 185.197.74.234 185.197.74.231 第二种 ...
 - 前端提交表单两种验证方式记录 jq或h5 required属性
		
JQuery: <form id="form"> <input type="text" name="aaa"> &l ...
 - 第二节:SSL证书的申请、配置(IIS通用)及跳转Https请求的两种方式
		
一. 相关概念介绍 1. SSL证书服务 SSL证书服务由"服务商"联合多家国内外数字证书管理和颁发的权威机构.在xx云平台上直接提供的服务器数字证书.您可以在阿里云.腾讯云等平台 ...
 - 在Java Web程序中使用监听器可以通过以下两种方法
		
之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...
 - android第一行代码-5.监听器的两种用法和context
		
监听器的两种用法 1.匿名函数设置监听器 public class MainActivity extends Activity { private Button button; @Override p ...
 - java中servletContextListener、httpSessionListener和servletRequestListener使用整理
		
在java web应用中,listener监听器似乎是必不可少的,常常用来监听servletContext.httpSession.servletRequest等域对象的创建.销毁以及属性的变化等等, ...
 - <Listener>servletContextListener、httpSessionListener和servletRequestListener使用整理
		
在java web应用中,listener监听器似乎是不可缺少的.经常常使用来监听servletContext.httpSession.servletRequest等域对象的创建.销毁以及属性的变化等 ...
 
随机推荐
- 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷
			
原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...
 - [ACM] hdu 1671 Phone List (特里)
			
Phone List Problem Description Given a list of phone numbers, determine if it is consistent in the s ...
 - C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable
			
var doc1 = new XmlDocument(); var doc2 = new XmlDocument(); XmlNode root1 = doc1.DocumentElement; do ...
 - 在 MVC6 中创建 Web API
			
ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API ASP.NET 5.0 的主要目标之一是统一MVC 和 Web API 框架应用. 接下来几篇文章中您会了解以下内容: ...
 - 《浪潮之巅》完全系类——IT人士必读经典
			
浪潮之巅 第一章 帝国的余辉(AT&T) 浪潮之巅第二章 — 蓝色巨人(IBM) 浪潮之巅第三章 — “水果”公司的复兴 (乔布斯和苹果公司) 浪潮之巅第四章 — 计算机工业的生态链 浪潮之巅 ...
 - System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string, string)已过时的解决办法
			
FormsAuthentication.HashPasswordForStoringInConfigFile 方法是一个在.NET 4.5中已经废弃不用的API,参见: https://msdn.mi ...
 - HTTP2协议之HPACK--之头部压缩规范介绍
			
接下来打算把HTTP2协议的头部压缩算法给翻译下,敬请等候. HPACK - Header Compression for HTTP/2 HPACK:HTTP/2头部压缩 概要说明 这个规范定义了HP ...
 - 在openwrt上编译最简单的一个ipk包文件
			
1 什么是opkg Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准.常用于路由.交换机等嵌入式设备中,用来管理软件包的安装升级与下载. opkg updat ...
 - EF codefirst+mvc4+bootstrap+autofac+ddd 系统共享 祝大家新年开心搬砖
			
博客园的博友新年好,小弟在此给大伙拜了晚年,感谢一直以来的支持. 在过去的一年,从博客园有400多ASP.NET MVC爱好者加入本人的群,本人在此很感激,并勉励大家一起学习奋斗. 希望在新的一年,继 ...
 - [转]JSON and Microsoft Technologies(翻译)
			
本文翻译CodeProject(链接)上的一篇文章,文章对JSON的概念以及它在微软一些技术中的应用起到了非常好的扫盲作用,总结得非常好,适合初学者. 目录 介绍 什么是JavaScript对象? 实 ...