`
eric chang
  • 浏览: 4264 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

session监听

    博客分类:
  • java
阅读更多
servlet中对session的监听有很多接口,功能很灵活,最常用的是监听Session和Attribute。这里要澄清一下概念,servlet中的session监听和Attribute监听含义有差别,session监听指的不是我们一般所理解的放置一个session或者销毁一个session,这是Attribute监听的功能,因为servlet中放置session的语法是session.setAttribute(“session名”,要放入的对象)。而session监听,监听的是HTTP连接,只要有用户与server连接,就算连接的是一个空白的jsp页面,也会触发session事件,所以此处的session实际上指的是connection,用来统计当前在线用户数最合适了。不知道我说清楚了没有。下面分别讲解这两种监听方式。  

1、   session监听  

首先编写一个session监听类,实作HttpSessionListener接口,它的作用是计算当前有多少个在线用户:
package   org.bromon.test;   

import   javax.servlet.*;   
import   javax.servlet.http.*;   

public   class   SessionCount   implements   HttpSessionListener{   
    private   static   int   count=0;   

    public   void   sessionCreated(HttpSessionEvent   se){   
        count++;   
        System.out.println(“session创建:”+new   java.util.Date());   
    }   

    public   void   sessionDestroyed(HttpSessionEvent   se){   
        count--;   
        System.out.println(“session销毁:”+new   java.util.Date());   
    }   

    public   static   int   getCount(){   
        return(count);   
    }   
}   

怎么样,是不是一目了然?count被定义为static,是因为要保证整个系统只有这一个count。如果你实在不放心,可以把它写成一个单例类。  

然后在web.xml中声明这个监听器:
<listener>   
  <listener-class>   
      org.bromon.test.SessionCount   
  </listener-class>   
</listener> 

编写一个测试页面test.jsp,内容是获得count:  
<%   
  int   count=org.bromon.test.SessionCount.getCount();   
  out.println(count);   
%>   

        需要注意的是,这里根本不涉及任何session的操作。重启动App   server,试着连接test.jsp,可以看到监听器已经开始工作。  

2、   Attribute监听  
        例如一个站内消息系统,肯定要获得所有登陆者的ID,才有可能互发消息。这就涉及Attribute监听。假设我们写了个用户登陆的模块,用户通过身份验证之后会产生一个session,保存它的相关信息,比如:  
//check.jsp   
<%   
String   name=request.getParameter(“name”);   
Name=new   String(name.getBytes(“ISO8859-1”));   
session.setAttribute(“user”,name);   
%>   


        做过jsp的兄弟应该对这段代码再熟悉不过了,下面写个监听器来监听用户登陆,把所有用户的ID保存到一个List当中,这个监听器实作HttpSessionAttributeListener接口:  
  
package   org.bromon.test;   

import   javax.servlet.*;   
import   javax.servlet.http.*;   
import   java.util.*;   

public   class   OnlineList   implements   HttpSessionAttributeListener{   
      private   static   List   list=new   ArrayList();   

      public   void   attributeAdded(HttpSessionBindingEvent   se){   
          if( "user ".equals(se.getName())){   
              list.add(se.getValue());   
          }   
    }   

      public   void   attributeRemoved(HttpSessionBindingEvent   se){   
          if( "user ".equals(se.getName())){   
              list.remove(se.getValue());   
          }   
      }   

    public   void   attributeReplaced(HttpSessionBindingEvent   se){}   

    public   static   List   getList(){   
          return(list);   
    }   
} 
 

写个简单的jsp来得到用户列表:
  
<%   
  java.util.List   list=org.bromon.test.OnlineList.getList();   
  out.println( "共有 "+list.size()+ "名用户已登陆: ");   
  for(int   I=0;I <lise.size();i++){   
        out.println(list.get(i));   
  }   
%> 

分享到:
评论

相关推荐

    JAVA SESSION监听器

    Java Session监听器是Java Servlet规范中提供的一种机制,用于对HttpSession对象的生命周期事件进行监听和处理。在Web应用程序中,Session是用来跟踪用户状态的重要工具,特别是在无状态的HTTP协议上。当用户登录后...

    session监听小例子

    Session监听器是Servlet API提供的一种机制,允许开发者对Session的生命周期事件进行监听和处理,比如Session创建、更新、失效等。下面,我们将深入探讨Session监听及其在实际应用中的作用。 首先,我们需要了解...

    HTML.rar 内容是常用AJAX,SESSION监听器等内容

    HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX...

    利用session监听器实现一个客户不能再两个客户端登录。

    这通常通过实现Session监听器来实现。本文将深入探讨如何利用Session监听器来防止同一用户在多个客户端同时登录。 首先,理解Session的基本概念至关重要。Session是服务器为每个用户创建的一种存储机制,用于保存...

    javaweb监听session

    当我们需要在特定事件(如Session过期、用户登出等)发生时执行某些操作时,可以使用Session监听器。本文将详细介绍如何在Java Web项目中设置和使用Session监听器,以及如何根据Session ID获取Session。 首先,为了...

    SpringMVC拦截器实现监听session是否过期详解

    例如,session是如何在HTTP协议中实现的、session过期后如何清除、如何在不同容器中管理session等,这些内容对于理解和实现session监听机制也是十分关键的。总之,通过SpringMVC拦截器来实现对session是否过期的监听...

    监听session的创建到销毁

    本文将深入探讨如何在Spring MVC项目中实现Session监听,并详细讲解相关知识点。 首先,我们需要了解Session监听器的基本概念。在Java Web应用中,监听器是一种Servlet API组件,它可以监听特定的事件并作出响应。...

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

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

    判断session过期的方式

    以下是一个简单的Session监听器示例: ```java @WebListener public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { @Override public void sessionDestroyed...

    单用户登录监听器

    一个自己写的实现单用户登录,单点登录的监听器,一旦新用户登录将会销毁上一个登录用户的session 只需在设置session值之前调用一下重置登录这个方法 值得注意的就是,里面的判断得根据自己的项目中存的session的...

    session实现记录用户登录状态

    用session记录用户的登录状态 1.登录 2.登录成功后将此“已登录”状态保存。 3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到...

    session生命周期的设置

    3. **Session监听器**:通过实现HttpSessionListener或HttpSessionAttributeListener接口,可以在Session创建、销毁或属性变化时执行特定操作。 4. **及时清理Session**:为了避免内存泄漏,开发者应合理设计...

    java web session跨域共享(redis)

    6. **实现Session监听器**:可以创建一个监听Session的监听器,当Session创建、更新、销毁时,同步这些变化到Redis中,保持Redis中的Session与Web服务器上的Session同步。 7. **安全考虑**:使用Redis存储Session...

    session 共享 tomcat-redis-session-manager 所需要的jar (绝对可用)

    3. "tomcat-cluster-redis-session-manager-3.0.jar":这是Tomcat Redis Session Manager的核心组件,实现了Tomcat的Session监听器和Manager接口,使得Tomcat能够将Session数据存储到Redis中,并在需要时从Redis中...

    j2ee实验二:学习使用Session和Cookie

    4. **学习Session监听器的应用**:理解Session监听器的作用及其实现方法。 #### 实验内容概述 本次实验包括以下五个具体任务: 1. **开发一个简单的购物车**:构建一个可以添加商品至购物车的简单Web应用。 2. **...

    session共享

    3. **Session监听器**:为了实现Session的自动存储和获取,我们需要自定义一个实现了HttpSessionListener接口的监听器。在这个监听器中,我们可以监听Session的创建、销毁事件,从而在Redis中进行相应的操作。 4. *...

    Tomcat7+Redis+Session

    4. **配置Context**:在Tomcat的`context.xml`配置文件中,添加`Manager`元素,指定使用自定义的Session监听器,并配置Redis连接的相关属性,如主机地址、端口、密码等。 5. **Session操作**:在应用代码中,当创建...

    java监听器和过滤器详解

    - **Session监听器**:例如`HttpSessionBindingListener`,用来监听对象与`session`之间的绑定与解绑操作;`HttpSessionActivationListener`用于监听`session`的序列化与反序列化操作,但一般情况下,这些操作是由...

    session过期处理

    一是设置Session监听器,监听Session的销毁事件;二是每次接收到请求时,检查Session的有效性,如果过期则进行处理。 3. **Session过期后的处理**:常见的处理方式包括: - 弹出登录框:当检测到Session过期,...

Global site tag (gtag.js) - Google Analytics