`

struts2 利用SessionListener实现网站在线人数统计

 
阅读更多

自定义MySessionListener实现HttpSessionListener接口

package com.sessionListener.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


public class MySessionListener implements HttpSessionListener {
	
	private long onlineCount;

	public void sessionCreated(HttpSessionEvent event) {
		// TODO Auto-generated method stub
		this.onlineCount=this.onlineCount+1;
                                //保存在application作用域
		event.getSession().getServletContext().setAttribute("onlineCount", onlineCount);
	}

	public void sessionDestroyed(HttpSessionEvent event) {
		// TODO Auto-generated method stub
		this.onlineCount=this.onlineCount-1;
		event.getSession().getServletContext().setAttribute("onlineCount", onlineCount);
	}

}

 在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">
  <display-name></display-name>	
  
  <!-- 配置自定义监听器 -->
  <listener>
  	<listener-class>com.sessionListener.listener.MySessionListener</listener-class>
  </listener>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping></web-app>

 jsp页面

当前在线人数:${application.onlineCount }

 

对每一个正在访问的用户,J2EE应用服务器会为其建立一个对应的HttpSession对象。当一个浏览器第一次访问网站的时候,J2EE应用服务器会新建一个HttpSession对象,并触发HttpSession创建事件,如果注册了HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的sessionCreated方法。相反,当这个浏览器访问结束超时的时候,J2EE应用服务器会销毁相应的HttpSession对象,触发HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。
  可见,对应于一个用户访问的开始和结束,相应的有sessionCreated方法和sessionDestroyed方法执行。这样,我们只需要在HttpSessionListener实现类的sessionCreated方法中让计数器加1,在sessionDestroyed方法中让计数器减1,就轻松实现了网站在线人数的统计功能。

分享到:
评论

相关推荐

    利用java监听器实现在线人数统计

    总结来说,通过使用Java监听器实现在线人数统计,开发者可以利用servlet规范提供的接口来实时追踪和显示当前网站的活跃用户数量。这种方法不仅特别,而且对于理解Java Web开发中的事件驱动模型也非常有帮助。希望...

    SessionListener

    1. **统计在线用户**:当`sessionCreated()`被调用时,增加在线用户计数;当`sessionDestroyed()`被调用时,减少计数。这样可以实时知道网站有多少活跃用户。 2. **资源释放**:如果`Session`中存储了大量资源,...

    java统计在线人数

    以上就是通过`HttpSessionListener`统计在线人数的基本原理和实现步骤。在实际应用中,你可能还需要根据项目需求进行相应的调整和优化,比如增加日志记录、异常处理等。项目中的`SessionListener`类应该包含了实现...

    使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

    以上就是使用`SessionListener`、持久化`Session`和`Springmvc拦截器`实现单点登录的基本原理和实现步骤。通过这样的设计,可以有效地提升用户体验,同时确保系统的安全性。在实际项目中,还需要根据具体需求进行...

    sessionListener

    这个资源是针对session容器的,在具有多个session的session容器里需要进行注册,所以就有了这个代码。不过写的还是很粗糙的。

    session统计在线人数.rar

    在这个关于"session统计在线人数.rar"的压缩包中,包含了Java编程语言的一个示例项目,主要用于演示如何通过session对象来跟踪和统计网站或应用程序中的在线用户数量。Java Session是服务器端为每个客户端会话分配的...

    Struts2+Spring3+MyBatis3完整实例

    网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...

    java web strut电子商城.rar

    Java Web Struts电子商城是一个基于Java技术的中型网站应用,它利用了Struts框架来构建高效的业务逻辑和用户交互。Struts是一个开源的MVC(Model-View-Controller)框架,它为开发者提供了一种结构化的方式来组织Web...

    利用Spring Boot的自动化配置特性来实现快速的将Shiro集成到SpringBoot应用中.zip

    本资料包“利用Spring Boot的自动化配置特性来实现快速的将Shiro集成到SpringBoot应用中.zip”聚焦于如何将安全框架Shiro与Spring Boot无缝融合,从而提升企业级应用的安全性。 Shiro是Apache组织提供的一款轻量级...

    单一登录踢人效果

    在踢人效果实现中,我们需要使用forceLogoutUser方法,该方法用于强行退出已经在线的用户。该方法接受一个参数:要强行退出的用户的ID。在方法中,我们首先从sessionMap中获取对应的Session对象,然后清空Session...

    Java后台实现前台下线通知推送

    本文将深入探讨如何利用Servlet来实现实时通知推送功能,适合初学者和有一定经验的开发者。 首先,我们需要了解Servlet的基本工作原理。Servlet是一个Java类,它扩展了服务器的功能,能够处理来自客户端(通常是Web...

    Session过期后自动跳转到登录页面的实例代码

    然后,我们需要创建一个实现了`HttpSessionListener`接口的Java类,如`SessionListener`。在这个类中,`sessionCreated()`方法会在Session创建时被调用,而`sessionDestroyed()`方法会在Session销毁(即过期)时被...

    servlet监听器实现踢人小案例

    在这个“servlet监听器实现踢人小案例”中,我们将探讨如何利用监听器来实现在用户会话过期或者特定条件下自动“踢出”用户的功能。 首先,我们要了解Servlet API中的监听器接口。在`javax.servlet`包下,有两个...

    S2SH用户重复登录问题[文].pdf

    在本文中,我们将探讨如何解决S2SH(Struts2 + Spring + Hibernate)框架下的用户重复登录问题。这个问题通常出现在多用户系统中,系统需要确保一个用户在同一时间只能在一个设备或浏览器上保持登录状态,避免数据...

    SpringBoot整合Shiro,实现从数据库加载权限、权限的动态更新、Session共享

    2. **Session事件监听**:通过实现`SessionListener`接口,可以在Session创建、修改、过期等事件发生时进行相应处理。 **四、SpringBoot整合** 1. **启动器配置**:创建一个SpringBoot的启动器类,使用`@...

    JAVA培训Servlet监听器.pdf

    SessionListener用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet..SessionListener接口或者javax.servlet..SessionActivationListener接口,或者两个都实现。例如: ```java public class ...

    监听器实例jsp编写望大家喜欢

    例如,我们可以通过HttpSessionAttributeListener监听到会话属性的变化,这在实现用户在线状态跟踪或个性化推荐时非常有用。 在"listener"这个压缩包文件中,可能包含了以下内容: 1. 实现监听器接口的Java源代码...

    基于sshd构建sftp服务器

    Apache MINA SSHD是一个开源项目,提供了一个纯Java实现的SSH-2协议服务器和客户端。它允许开发者轻松地构建自己的SSH服务,包括SFTP服务器。SSHD支持多种身份验证方式,包括密码和密钥对验证,这使得它在安全性方面...

    javaEE(上下文_监听器_过滤器) ppt

    - 利用SessionListener管理用户会话,例如超时提醒或自动登出。 - 应用过滤器进行权限验证,确保只有授权用户才能访问某些资源。 - 在Web应用启动时初始化数据库连接池,关闭时释放资源。 - 对HTTP请求和响应...

    使用maven 部署环境 mvc模式 实现 登录 退出登录注册 过滤和监听的功能

    2. **创建Maven项目结构** 使用Maven的命令行工具或者IDE如IntelliJ IDEA,可以快速生成一个标准的MVC项目结构。基本目录包括`src/main/java`(存放源代码)、`src/main/resources`(存放资源配置文件)、`src/main...

Global site tag (gtag.js) - Google Analytics