监听器概述
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 Servlet规范中提供的一种机制,用于对HttpSession对象的生命周期事件进行监听和处理。在Web应用程序中,Session是用来跟踪用户状态的重要工具,特别是在无状态的HTTP协议上。当用户登录后...
在Java Web开发中,Session是服务器用来跟踪用户状态的重要机制。...通过学习这个小例子,你可以更深入地理解如何在Java Web应用中使用Session监听器,并将其应用于自己的项目中,提升应用程序的管理和安全性。
### Java的监听器种类 Java中的监听器是一种特殊类型的对象,它们主要负责监听特定的事件并在这些事件发生时执行相应的动作。监听器广泛应用于多种场景,尤其是在Servlet容器中,监听器能够帮助开发者更加灵活地...
- **Session监听器**:例如`HttpSessionBindingListener`,用来监听对象与`session`之间的绑定与解绑操作;`HttpSessionActivationListener`用于监听`session`的序列化与反序列化操作,但一般情况下,这些操作是由...
这个库可能包含一些自定义的监听器、过滤器或其他组件,以实现会话的持久化和集群间的同步。它使得在分布式环境中,无论用户请求哪台服务器,都能获取到正确的session信息,从而保持用户状态的一致性。 在实际应用...
这通常通过实现Session监听器来实现。本文将深入探讨如何利用Session监听器来防止同一用户在多个客户端同时登录。 首先,理解Session的基本概念至关重要。Session是服务器为每个用户创建的一种存储机制,用于保存...
Java Servlet监听器(Listener)是Java Web开发中的一个重要组件,它们允许开发者在特定事件发生时执行自定义逻辑,而无需直接修改原有的业务代码。监听器是Servlet规范的一部分,通过实现特定的接口,开发者可以...
这就需要我们在Session监听器中实现逻辑,当Session失效时触发事件并更新计数。 3. **分布式环境**:在分布式系统中,多个服务器可能共享同一个Session存储(例如使用Redis或Memcached)。在这种情况下,Session...
为了更好地理解和管理Session的生命周期及其属性,我们可以使用监听器(Listeners)来实现这一目标。以下是关于使用监听器跟踪Session生命周期和属性的详细解释。 1. **HttpSessionListener**: - `...
在Java编程中,监听器(Listener)是一种关键的机制,它允许程序对特定事件的发生做出反应。本主题将深入探讨如何使用Java监听器来统计当前在线人数,这通常涉及到网络编程,尤其是基于Socket或者HTTP协议的服务器...
JAVA Servlet 监听器详解 JAVA Servlet监听器是指在Servlet容器中,用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后做一些必要的处理。监听器可以分为多种类型,每种类型都有其特定的应用场景和...
- 如果是在传统的Java Web应用中,则需要在web.xml文件中配置监听器,如文件内容所示,使用`<listener>`标签指定监听器类的路径。 第三,了解Spring Boot中特定的配置: - 使用`@ServletComponentScan`注解,在...
本文将详细介绍如何在Java Web项目中设置和使用Session监听器,以及如何根据Session ID获取Session。 首先,为了实现Session监听,我们需要创建一个实现了`javax.servlet.http.HttpSessionListener`接口的类。这个...
Java Web的监听器机制是增强应用程序功能的强大工具,通过`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`,我们可以实现对Web应用程序上下文、HttpSession以及session属性的监听...
6. **实现Session监听器**:可以创建一个监听Session的监听器,当Session创建、更新、销毁时,同步这些变化到Redis中,保持Redis中的Session与Web服务器上的Session同步。 7. **安全考虑**:使用Redis存储Session...
在Java Web开发中,特别是基于Servlet的Web应用中,Session监听机制是一项非常重要的技术。Session监听能够帮助开发者追踪用户会话的状态变化,对于实现诸如在线用户统计、用户状态跟踪等功能非常有用。根据给定的...
【Java Web 监听器统计在线用户及人数详解】 在Java Web开发中,实时统计在线用户数量是一项重要的功能,这通常涉及到对用户会话(Session)的管理。本篇文章将详细解析如何使用Java Web监听器来实现这一目标。 ...
例如,session是如何在HTTP协议中实现的、session过期后如何清除、如何在不同容器中管理session等,这些内容对于理解和实现session监听机制也是十分关键的。总之,通过SpringMVC拦截器来实现对session是否过期的监听...
Java Web监听器Listener接口原理及用法实例 Java Web监听器Listener接口是一种特殊的Java接口,用于监听和响应Web应用程序中的事件。该接口定义在javax.servlet包中,提供了一种机制,使开发者能够监听和响应Web...
以下是一个简单的Session监听器示例: ```java @WebListener public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { @Override public void sessionDestroyed...