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

session监听器的使用

阅读更多
监听器概述

  1.Listener是Servlet的监听器
  2.可以监听客户端的请求、服务端的操作等。
  3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1。
  4.编写监听器需要实现相应的接口
  5.编写完成后在web.xml文件中配置一下,就可以起作用了
  6.可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪

常用的监听接口

  1.ServletContextAttributeListener
  监听对ServletContext属性的操作,比如增加/删除/修改
  2.ServletContextListener
   监听ServletContext,当创建ServletContext时,激发contextInitialized (ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed (ServletContextEvent sce)方法。
  3.HttpSessionListener
  监听HttpSession的操作。当创建一个Session时,激发session Created(SessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。
  4.HttpSessionAttributeListener
   监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded (HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved (HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced (HttpSessionBindingEvent se) 方法。

使用范例:
由监听器管理共享数据库连接

  生命周期事件的一个实际应用由context监听器管理共享数据库连接。在web.xml中如下定义监听器:
<listener>
    <listener-class>XXX.MyConnectionManager</listener-class>
</listener> Øserver创建监听器的实例,接受事件并自动判断实现监听器接口的类型。要记住的是由于监听器是配置在部署描述符web.xml中,所以不需要改变任何代码就可以添加新的监听器。

public class MyConnectionManager implements ServletContextListener{ 
  public void contextInitialized(ServletContextEvent e) {
        Connection con = // create connection
        e.getServletContext().setAttribute("con", con);
    } 
   public void contextDestroyed(ServletContextEvent e) {
        Connection con = (Connection) e.getServletContext().getAttribute("con");
        try {
          con.close();
        }
       catch (SQLException ignored) { } // close connection
    }

  监听器保证每新生成一个servlet context都会有一个可用的数据库连接,并且所有的连接对会在context关闭的时候随之关闭。

计算在线用户数量的Linstener
(1)
Package xxx;

public class OnlineCounter { 
   private static long online = 0;    
   public static long getOnline(){
      return online;
    }
    public static void raise(){
       online++;
    }
    public static void reduce(){
       online--;
   }
}

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

public class OnlineCounterListener implements HttpSessionListener{
    public void sessionCreated(HttpSessionEvent hse) {
        OnlineCounter.raise(); 
    }
   public void sessionDestroyed(HttpSessionEvent hse){ 
        OnlineCounter.reduce();
    }
}

在需要显示在线人数的JSP中可是使用
目前在线人数:
<%@ page import=“xxx.OnlineCounter" %>
<%=OnlineCounter.getOnline()%>

退出会话(可以给用户提供一个注销按钮):
<form action="exit.jsp" method=post>
  <input type=submit value="exit">
</form>

exit.jsp: <%session.invalidate() ;%>

在web.xml中加入:
<listener>
  <listener-class>servletlistener111111.SecondListener</listener-class> </listener>

怎么样,就是这么简单,不用对现有代码做任何的修改。
分享到:
评论

相关推荐

    JAVA SESSION监听器

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

    session监听小例子

    在Java Web开发中,Session是服务器用来跟踪用户状态的重要机制。...通过学习这个小例子,你可以更深入地理解如何在Java Web应用中使用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的生命周期及其属性,我们可以使用监听器(Listeners)来实现这一目标。以下是关于使用监听器跟踪Session生命周期和属性的详细解释。 1. **HttpSessionListener**: - `...

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

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

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

    - 使用`@WebListener`注解标注监听器类,以确保监听器可以被Spring boot自动检测并使用。 - 如果是在传统的Java Web应用中,则需要在web.xml文件中配置监听器,如文件内容所示,使用`&lt;listener&gt;`标签指定监听器类的...

    javaweb监听session

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

    单用户登录监听器

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

    监听session的创建到销毁

    首先,我们需要了解Session监听器的基本概念。在Java Web应用中,监听器是一种Servlet API组件,它可以监听特定的事件并作出响应。对于Session监听,我们主要关注`HttpSessionListener`和`...

    session监听

    - **配置监听器**:为了让应用识别并使用该监听器,还需要在`web.xml`文件中进行配置。 ```xml org.bromon.test.SessionCount ``` - **测试页面**:可以通过创建一个简单的JSP页面来展示当前在线用户的...

    java监听器和过滤器详解

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

    day18 监听器 统计在线人数,定时销毁超时session,钝化活化session,在线列表显示和踢人功能防止用户自动登录,在线支付

    在本主题“day18 监听器”中,我们将探讨如何利用监听器来统计在线人数、定时销毁超时session、实现session的钝化与活化,以及如何在系统中显示在线用户列表和实现踢人功能,从而防止用户自动登录。同时,还会涉及...

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

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

    判断session过期的方式

    使用Session监听器 Java Web应用可以注册Session监听器来监听Session的生命周期事件,包括创建、销毁以及过期。当Session被废弃或过期时,监听器的`sessionDestroyed()`方法会被调用。这可以用来实现自动清理过期...

    关于过滤器和监听器的使用模板

    **如何使用过滤器和监听器** 在`web.xml`配置文件中,我们可以定义过滤器和监听器。例如,对于过滤器,我们需要定义一个filter元素,包含filter-name、filter-class和url-pattern等属性。对于监听器,我们定义一个...

    session实现记录用户登录状态

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

    session中的bean监听

    属性监听和bean监听的区别: 属性监听:是对三个容器中的任何属性(包括对象和不是对象的数据,基本...从使用上它不同于前面两个监听器的学习,但给我们的感觉就是一个属性监听的vip用户,这个vip用户是一个JavaBean

    解决Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程问题

    这种情况往往发生在客户端频繁地触发会话变化或更新时,会话的监听器会不断产生消息并由消息监听容器处理。如果默认的线程池配置不当,就容易造成线程资源的过度消耗,甚至导致系统资源耗尽。 这个问题的核心是...

    过滤器和监听器的使用

    例如,Session监听器可以监听会话的创建、过期等事件,ServletContext监听器可以监听上下文的初始化和销毁事件,Request监听器可以监听请求的开始和结束。监听器的实现通常需要实现特定接口,如HttpSessionListener...

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

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

Global site tag (gtag.js) - Google Analytics