package org.springframework.web;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.ContextLoaderListener;
import util.ToolKit;
import com.sun.org.apache.bcel.internal.generic.NEW;
/**
* 在线统计
* @author 杨伦亮 Jun 5, 2011
*/
public class OnLineUsers extends ContextLoaderListener implements HttpSessionListener {
/** user */
public static final String User_Name = "username";
public static final String User = "user";
/** onLineUsers */
public static final String Application_Users = "onLineUsers";
private static Map<String, String> usersList = new HashMap<String, String>();
private static Log log = LogFactory.getLog(OnLineUsers.class);
public void sessionCreated(HttpSessionEvent se) {
}
@SuppressWarnings("unchecked")
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
ServletContext application = session.getServletContext();
// 取得登录的用户名
String username = (String) session.getAttribute(User_Name);
if("".equals(username)){
log.fatal(new StringBuffer(username).append(ToolKit.getDateByType(" yyyy年MM月dd日 HH:mm:ss ")).append(" 退出系统!"));
}
log.info(username +"\t退出系统!");
// 从在线列表中删除用户名
usersList = (Map<String, String>) application.getAttribute(Application_Users);
if(usersList.containsKey(username)){
usersList.remove(username);
application.setAttribute(Application_Users, usersList);
}else{
log.info("用户不在在线列表中!"+usersList);
}
}
private ContextLoader contextLoader;
/**
* Initialize the root web application context.
*/
public void contextInitialized(ServletContextEvent event) {
this.contextLoader = createContextLoader();
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
/**
* Create the ContextLoader to use. Can be overridden in subclasses.
* @return the new ContextLoader
*/
protected ContextLoader createContextLoader() {
return new ContextLoader();
}
/**
* Return the ContextLoader used by this listener.
* @return the current ContextLoader
*/
public ContextLoader getContextLoader() {
return this.contextLoader;
}
/**
* Close the root web application context.
*/
public void contextDestroyed(ServletContextEvent event) {
if(this.contextLoader !=null){
this.contextLoader.closeWebApplicationContext(event.getServletContext());
}
}
}
分享到:
相关推荐
### JSP实现在线人数及在线用户统计 #### 知识点概述 在现代Web开发中,统计在线人数和在线用户是十分重要的功能之一,尤其是在构建社区、论坛等交互性强的网站时。通过JSP(JavaServer Pages)可以方便地实现这一...
在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 实现在线人数统计功能,以便展示当前在线的用户数量。我们将分析提供的代码段,并解释关键概念和技术。 首先,我们有一个名为`onLineUser`的类,它实现了`...
其次,统计用户停留时间是衡量用户对网站内容兴趣的重要指标。在timestay目录下的代码可能包含了实现这一功能的关键。通常,当用户打开网页时,服务器会记录开始时间,当用户离开时,记录结束时间,两者的差值即为...
根据给定文件的信息,我们可以总结出以下关于使用 JSP 实现在线用户人数统计的知识点: ### 1. **实现原理** 在线人数统计主要是通过利用 `HttpSession` 的生命周期事件来实现。每当一个新用户访问网站时,服务器会...
这意味着,无论何时有新用户访问,都会使用同一个`onLineUser`实例来管理在线用户信息。页面接收`username`参数,检查用户是否存在,如果不存在,则将用户添加到在线列表中,并设置会话超时时间。 ### 实现细节 1....
在"jsp中监听器实现在线用户统计"这个场景下,我们需要关注的是如何利用监听器来跟踪和管理在线用户。 首先,我们要理解Servlet监听器的概念。Servlet监听器是实现了Java Servlet API中特定接口的Java类,这些接口...
在Java JSP(JavaServer Pages)环境中,统计在线人数是一项常见的需求,这通常涉及到服务器端的会话管理、数据持久化以及实时性处理。这里我们将深入探讨如何利用JSP技术来实现这一功能。 首先,我们需要理解JSP的...
本项目的目标是通过JSP(JavaServer Pages)技术来实现一个简单的在线用户统计系统。主要功能包括:记录用户登录状态、统计当前在线用户数量以及展示在线用户列表。 #### 二、关键技术点详解 ##### 1. 使用`...
在网站运营中,流量统计是一项至关重要的任务,它能够帮助我们了解网站的访问情况,包括访问量、用户行为、热门页面等信息。本资源提供了JSP实现网站流量统计的一种方法,对于学习和实践Web开发,尤其是JSP应用,...
总的来说,客户信息管理系统JSP项目涉及了Web开发的基础知识、数据库管理、用户权限控制、数据安全等多个方面,是学习和实践企业级应用开发的良好案例。开发者需要掌握Java编程、JSP语法、SQL查询以及相关的Web框架...
最后,Servlet将生成的图表作为响应的一部分返回给JSP,JSP将其嵌入到HTML页面中,用户即可在浏览器上看到动态生成的统计图表。 总的来说,"JFreeChart+JSP实现统计图展示"是一个典型的Web应用开发流程,它涉及到...
总的来说,JSP结合合适的图表库,可以有效地实现统计图的展示,帮助用户直观地理解复杂的数据。无论是柱形图用于比较不同类别的数据,线形图用于展示趋势,还是点状图用于描绘数据分布,都是数据分析和决策制定的...
了解和分析这个JSP流量统计系统,对于开发者来说,不仅可以学习到JSP和Servlet的结合使用,还能掌握Web开发中的数据处理、页面设计以及用户体验优化等相关技能。同时,这也是对大数据处理和可视化的一个基础实践,...
**JSP 在线人数统计的实现** 在Web开发中,实时在线人数统计是一项常见的需求,它可以帮助网站管理员了解当前有多少用户正在访问网站,以便优化资源分配和服务质量。JSP(JavaServer Pages)作为Java Web开发的重要...
**JSP流量统计系统**是一种基于Java Server Pages (JSP)技术构建的Web应用程序,用于收集、处理和展示网站的访问流量数据。JSP作为Java平台上的动态网页开发技术,允许开发者将静态内容与动态逻辑相结合,从而创建...
在线人数统计程序是Web开发中一个常见的功能,用于实时显示网站当前在线用户的数量。这个程序通常基于服务器端的技术实现,例如JavaServer Pages (JSP)。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java...
在JSP流量统计系统中,这些元素可能被用来处理用户请求,存储和检索数据,以及生成动态内容。 **二、流量统计原理** 流量统计通常涉及以下几个关键步骤: 1. **访问记录**:当用户访问网站时,系统会记录每次请求...
总的来说,"jsp统计实例"是一个很好的学习资源,它涵盖了JSP的基础知识和实际应用,对于初学者或进阶者都是有价值的参考资料。通过深入研究和实践,开发者可以更好地掌握JSP在统计和数据分析中的应用。
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)技术来实现一个简单的页面访问人数统计的功能。这个功能对于初学者来说是一个很好的实践项目,能够帮助他们更好地理解和运用JSP的基本原理。我们将讨论以下...