`

HttpSessionListener

阅读更多

继上次说到Listener的功效,这里就不得不说说另外一个接口HttpSessionListener了。

上次说到了ServletContextListener,它是用来监听Servlet Context的创建和销毁的状态。今天特别有兴趣在

聊聊另一个监听的接口,名字叫做HttpSessionListener。

在理解这个接口之前,先提出一个问题,就是假设我的web应用上想知道到底有多少用户在使用?

首先看一段代码。

package demo.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCounter implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent event) {
        ServletContext ctx = event.getSession( ).getServletContext( );
        Integer numSessions = (Integer) ctx.getAttribute("numSessions");
        if (numSessions == null) {
            numSessions = new Integer(1);
        }
        else {
            int count = numSessions.intValue( );
            numSessions = new Integer(count + 1);
        }
        ctx.setAttribute("numSessions", numSessions);
    }
    public void sessionDestroyed(HttpSessionEvent event) {
        ServletContext ctx = event.getSession( ).getServletContext( );
        Integer numSessions = (Integer) ctx.getAttribute("numSessions");
        if (numSessions == null) {
            numSessions = new Integer(0);
        }
        else {
            int count = numSessions.intValue( );
            numSessions = new Integer(count - 1);
        }
        ctx.setAttribute("numSessions", numSessions);
    }
}

 

 

在这个解决方案中,任何一个Session被创建或者销毁时,都会通知SessionCounter 这个类,当然通知的原因是必须在web.xml文件中做相关的配置工作。如下面的配置代码:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
   
<web-app>
  <display-name>Struts Examples</display-name>
 
  <listener>
      <listener-class>demo.listener.SessionCounter
      </listener-class>
  </listener>
  ... rest of web.xml

 

http://spaces.msn.com/members

分享到:
评论

相关推荐

    HttpSessionListener在线人数和历史访问量

    在Java Web开发中,`HttpSessionListener`是一个重要的接口,用于监听`HttpSession`对象的创建和销毁事件。这个接口是Java Servlet API的一部分,通过实现它,开发者可以获取到Web应用中的在线用户数量以及历史访问...

    Spring boot通过HttpSessionListener监听器统计在线人数的实现代码

    在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...

    HttpSessionListener监听session的创建及销毁,实现在线用户统计

    用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...

    HttpSessionListener 和HttpSessionBindingListener的区别 单点登录

    ### HttpSessionListener 和 HttpSessionBindingListener 的区别 #### 一、概述 在Java Web开发中,`HttpSessionListener`和`HttpSessionBindingListener`都是用于监听HTTP会话生命周期的重要接口。它们分别用于...

    jsp 统计在线人数利用HttpSessionListener、HttpSessionBindingListener

    jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。

    在ASP.NET中而不是在Java中使用httpsessionlistener做什么?

    而`HttpSessionListener`是.NET Framework提供的一种机制,允许开发者监听和处理与会话相关的事件,如会话开始、结束、超时等。然而,这个功能在Java中并没有直接对应的类或接口。因此,标题“在ASP.NET中而不是在...

    监听session的创建到销毁

    `HttpSessionListener`可以监听Session的创建和销毁,而`HttpSessionAttributeListener`则可以监听Session属性的添加、移除和替换。 1. **创建Session监听器** 创建一个实现了`HttpSessionListener`接口的类,例如...

    java 在Jetty9中使用HttpSessionListener和Filter

    Java 在 Jetty9 中使用 HttpSessionListener 和 Filter Java 在 Jetty9 中使用 HttpSessionListener 和 Filter 是一种常见的技术,用于监听和过滤 HTTP 请求。在这篇文章中,我们将详细介绍如何在 Jetty9 中使用 ...

    java统计在线人数

    本项目通过实现`HttpSessionListener`接口,每隔一分钟动态更新在线人数,提供了高效且可靠的解决方案。以下是对这个话题的详细阐述: 1. **Java Servlet与HttpSessionListener** Java Servlet是Java EE平台中的...

    java监听器学习 统计在线人数

    本教程将深入讲解如何利用Java的监听器机制来统计在线人数,具体涉及到ServletContextListener、HttpSessionListener以及HttpSessionAttributeListener。 首先,`ServletContextListener`是Java Servlet API中的一...

    SessionListener

    在Java Web开发中,`SessionListener`是一种非常重要的机制,它允许我们监听用户会话(Session)的创建和销毁事件。...当我们需要在用户多次请求之间保持用户信息时,如登录状态,`Session`就显得尤为重要。...

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

    首先,开发者可能尝试使用Session监听器(HttpSessionListener)来检测Session的过期。监听器是Java Servlet规范的一部分,允许我们注册监听器以响应特定的事件,如Session的创建和销毁。在`web.xml`文件中,我们...

    Servlet监听器例子

    在这个“Servlet监听器例子”中,我们将深入探讨如何使用`ServletContextListener`, `HttpSessionListener`, 和 `HttpSessionAttributeListener`来实现不同的功能。 首先,`ServletContextListener`接口用于监听...

    springboot 用监听器统计在线人数案例分析

    一个典型的解决方案是使用HttpSessionListener来监听session的变化,通过这种方式可以统计当前在线用户的数量。本文通过对Spring Boot用监听器统计在线人数案例的分析,详细介绍了实现该功能的步骤和注意事项。 ...

    servlet监听器实现踢人小案例

    `HttpSessionListener`用于监听会话的创建和销毁事件,而`HttpSessionAttributeListener`则可以监听到会话属性的变化。 在本案例中,我们可能会实现`HttpSessionListener`,以便在会话开始和结束时执行相应的操作。...

    J2EE登陆人数统计

    - **HttpSessionListener**:为了实现登录人数的统计,我们可以利用`HttpSessionListener`接口。当一个新的`HttpSession`被创建或销毁时,`HttpSessionListener`会接收到通知。通过监听这些事件,我们可以在用户...

    SSH框架登录示例 同一账户只能一人登录

    用户注销 非正常退出 session失效 三种情况来进行 控制 分别使用了两种方式 进行了实现1:不修改数据库使用HashMap+HttpSessionListener 2:给数据库添加online列 使用(数据库脚本包含在内)HashMap+...

    listener的实例代码

    它们实现了特定的接口,如`ServletContextListener`、`HttpSessionListener`或`ServletRequestListener`等,以便在特定事件发生时执行相应的操作,如初始化、销毁、创建或销毁域对象等。 二、`Listener`的分类 1. `...

    JAVA SESSION监听器

    HttpSessionListener提供了对Session创建、销毁事件的监听,而HttpSessionAttributeListener则可以监听Session属性的变化,比如添加、移除和替换事件。 以下是创建一个简单的HttpSessionListener的例子: ```java ...

    利用HttpSessionListerner实现在线人数统计

    `HttpSessionListener`是Java Servlet API提供的一种机制,用于监听`HttpSession`对象的创建和销毁事件,从而实现对在线用户的统计。下面将详细解释如何通过`HttpSessionListener`来实现这一功能,并结合JavaScript...

Global site tag (gtag.js) - Google Analytics