`
yanm7788
  • 浏览: 19621 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java 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-classXXX.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-classservletlistener111111.SecondListener/listener-class /listener

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

相关推荐

    JAVA SESSION监听器

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

    session监听小例子

    在Java Web开发中,Session是服务器用来跟踪用户状态的重要机制。...通过学习这个小例子,你可以更深入地理解如何在Java Web应用中使用Session监听器,并将其应用于自己的项目中,提升应用程序的管理和安全性。

    Java的监听器种类

    ### Java的监听器种类 Java中的监听器是一种特殊类型的对象,它们主要负责监听特定的事件并在这些事件发生时执行相应的动作。监听器广泛应用于多种场景,尤其是在Servlet容器中,监听器能够帮助开发者更加灵活地...

    java监听器和过滤器详解

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

    java_session共享配置.jar

    这个库可能包含一些自定义的监听器、过滤器或其他组件,以实现会话的持久化和集群间的同步。它使得在分布式环境中,无论用户请求哪台服务器,都能获取到正确的session信息,从而保持用户状态的一致性。 在实际应用...

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

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

    JAVA Servlet监听器listener学习资料

    Java Servlet监听器(Listener)是Java Web开发中的一个重要组件,它们允许开发者在特定事件发生时执行自定义逻辑,而无需直接修改原有的业务代码。监听器是Servlet规范的一部分,通过实现特定的接口,开发者可以...

    JAVA的SESSION精准统计

    这就需要我们在Session监听器中实现逻辑,当Session失效时触发事件并更新计数。 3. **分布式环境**:在分布式系统中,多个服务器可能共享同一个Session存储(例如使用Redis或Memcached)。在这种情况下,Session...

    使用监听器跟踪session的生命周期和session的属性

    为了更好地理解和管理Session的生命周期及其属性,我们可以使用监听器(Listeners)来实现这一目标。以下是关于使用监听器跟踪Session生命周期和属性的详细解释。 1. **HttpSessionListener**: - `...

    Java监听器学习 统计当前在线人数

    在Java编程中,监听器(Listener)是一种关键的机制,它允许程序对特定事件的发生做出反应。本主题将深入探讨如何使用Java监听器来统计当前在线人数,这通常涉及到网络编程,尤其是基于Socket或者HTTP协议的服务器...

    JAVA培训Servlet监听器.pdf

    JAVA Servlet 监听器详解 JAVA Servlet监听器是指在Servlet容器中,用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后做一些必要的处理。监听器可以分为多种类型,每种类型都有其特定的应用场景和...

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

    - 如果是在传统的Java Web应用中,则需要在web.xml文件中配置监听器,如文件内容所示,使用`&lt;listener&gt;`标签指定监听器类的路径。 第三,了解Spring Boot中特定的配置: - 使用`@ServletComponentScan`注解,在...

    javaweb监听session

    本文将详细介绍如何在Java Web项目中设置和使用Session监听器,以及如何根据Session ID获取Session。 首先,为了实现Session监听,我们需要创建一个实现了`javax.servlet.http.HttpSessionListener`接口的类。这个...

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

    Java Web的监听器机制是增强应用程序功能的强大工具,通过`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`,我们可以实现对Web应用程序上下文、HttpSession以及session属性的监听...

    java web session跨域共享(redis)

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

    session监听

    在Java Web开发中,特别是基于Servlet的Web应用中,Session监听机制是一项非常重要的技术。Session监听能够帮助开发者追踪用户会话的状态变化,对于实现诸如在线用户统计、用户状态跟踪等功能非常有用。根据给定的...

    java web监听器统计在线用户及人数

    【Java Web 监听器统计在线用户及人数详解】 在Java Web开发中,实时统计在线用户数量是一项重要的功能,这通常涉及到对用户会话(Session)的管理。本篇文章将详细解析如何使用Java Web监听器来实现这一目标。 ...

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

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

    Java Web监听器Listener接口原理及用法实例

    Java Web监听器Listener接口原理及用法实例 Java Web监听器Listener接口是一种特殊的Java接口,用于监听和响应Web应用程序中的事件。该接口定义在javax.servlet包中,提供了一种机制,使开发者能够监听和响应Web...

    判断session过期的方式

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

Global site tag (gtag.js) - Google Analytics