博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
监听器小例子之统计在线人数
阅读量:4305 次
发布时间:2019-05-27

本文共 1699 字,大约阅读时间需要 5 分钟。

监听器小例子

统计同时在线人数:

每当有一个用户登录的时候在服务器端创建一个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

  	

hello

This is my JSP page.
在线人数:<%=application.getAttribute("count") %>
退出系统
web.xml

company
hello
web.CountListener
index.jsp

小知识:

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

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

 

转载地址:http://jzrws.baihongyu.com/

你可能感兴趣的文章
suse搭建ftp服务器方法
查看>>
centos虚拟机设置共享文件夹并通过我的电脑访问[增加smbd端口修改]
查看>>
文件拷贝(IFileOperation::CopyItem)
查看>>
MapReduce的 Speculative Execution机制
查看>>
大数据学习之路------借助HDP SANDBOX开始学习
查看>>
Hadoop基础学习:基于Hortonworks HDP
查看>>
为什么linux安装程序 都要放到/usr/local目录下
查看>>
Hive安装前扫盲之Derby和Metastore
查看>>
永久修改PATH环境变量的几种办法
查看>>
大数据学习之HDP SANDBOX开始学习
查看>>
Hive Beeline使用
查看>>
Centos6安装图形界面(hdp不需要,hdp直接从github上下载数据即可)
查看>>
CentOS7 中把yum源更换成163源
查看>>
关于yum Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx.
查看>>
linux下载github中的文件
查看>>
HDP Sandbox里面git clone不了数据(HTTP request failed)【目前还没解决,所以hive的练习先暂时搁置了】
查看>>
动态分区最佳实践(一定要注意实践场景)
查看>>
HIVE—索引、分区和分桶的区别
查看>>
Hive进阶总结(听课总结)
查看>>
大数据领域两大最主流集群管理工具Ambari和Cloudera Manger
查看>>