Servlet里面一共有八个监听, 其中有四个是session的监听接口与之关联的两个session事件,
这四个接口分别是:
HttpSessionAttributeListener and HttpSessionBindingEvent
HttpSessionBindingListener and HttpSessionBindingEvent
HttpSessionListener and HttpSessionEvent
HttpSessionActivationListener and HttpSessionEvent
HttpSessionAttributeListener: 用来监听session中的属性添加, 替换和删除,
只需创建一个类来实现HttpSessionAttributeListener接口, 然后在web.xml配个listener属性,其中litener-class是这
个类的路径. 该类会实现HttpSessionAttributeListener的三个方法. 分别对应session中的属性添加, 替换和删除. 该
类无需我们实例化使用, 因为servlet容器会创建该类的一个实例, 并是单例. 所以访问该系统的所有用户对session属
性的操作都会被HttpSessionAttributeListener监听到. HttpSessionBindingEvent事件的触发对象是任何object的实例, 因为session的setAttribute方法中可以存放任何object的实例。
HttpSessionBindingListener: 创建实现HttpSessionBindingListener接口的类, 不需在web.xml中配置, 该类会实现
HttpSessionBindingListener的两个方法valueBound()和valueUnbound(), 该类需要实例化使用, 将该类实例对象放
入session后会马上触发valueBound()方法, 从session中remove掉该实例时或session超时会马上触发
valueUnbound(), 很显然每个servlet都会创建一个该类的对象,所以多用户并发调用时它们都是相互独立的, 而且可
以创建多个实现HttpSessionBindingListener接口的类, 效果依然一样。
HttpSessionBindingEvent事件的触发对象是该类的实例本身(有点绕口),
举例
public class SessionListener implements HttpSessionBindingListener....
SessionListener sessionListener = new SessionListener();
//下面这句即是触发HttpSessionBindingEvent事件, 而触发对象正是sessionListener, 监听器的实例本身
request.getSession().setAttribute(request.getSession().getId(), sessionListener);
HttpSessionListener:监听session的创建和释放, 需在web.xml中配置, 重写sessionCreated()和
sessionDestroyed()方法, 它同样是容器创建的单列对象, 可以监听所有用户的session创建, 适合来做统计, 得注意
的一点是, 在浏览器访问服务器时, session的会话就创建了, 而session释放后才会调用sessionDestroyed()方法,
所以不能在sessionDestroyed()内做session清理工作, 因为已经无法获得session了。
HttpSessionActivationListener:当session在分布式环境中跨JVM时,实现该接口的对象得到通知,
需实行的方法sessionDidActivate()和sessionWillPassivate(), Activate与Passivate是用于置换对象的动作,当
session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透过对象序列化),所作的
动作称之为Passivate,而硬盘或储存器上的session对象重新加载JVM时所采的动作称之为Activate,所以容易理
解的,sessionDidActivate()与 sessionWillPassivate()分别于Activeate后与将Passivate前呼叫。
这四个都与session有关,但能做到验证登录的只有HttpSessionBindingListener and
HttpSessionListener , 无疑使用前者更合适些。
分享到:
相关推荐
### ServletListener大全 #### 概述 在Java Web开发中,`ServletListener`是一类特殊的设计模式,主要用于监听容器中的事件。例如,当一个HTTP会话被创建或销毁时,或者当请求开始或结束时,这些监听器可以执行特定...
这个接口提供了两个方法:`contextInitialized()`和`contextDestroyed()`,分别在Servlet容器启动和关闭时被调用。 ```java @WebListener public class FirstListener implements ServletContextListener { @...
关于filter、servlet在web.xml配置及加载顺序
### 关于Servlet监视器(Listener)的详细解析 在Java Web开发中,Servlet技术一直扮演着重要的角色。其中,Servlet监听器(Listener)是Servlet容器提供的一个非常实用的功能,它能够帮助开发者监听某些特定事件的...
在提供的压缩文件"servletlistener"中,可能包含了示例代码、配置文件以及相关的JSP页面,这些资源可以帮助你更好地理解和实践Servlet监听器的使用。通过分析和运行这些示例,你可以直观地看到监听器如何响应特定的...
Servlet、Filter、Listener 详解 Servlet 是运行在服务器上的小程序,它可以使任何 Java 应用程序、浏览器或任何设备。Servlet 的客户端可以提出请求并获得该请求的响应。Servlet 在初始化后即驻留内存中,因此每次...
2. **Servlet-API 2.3**:发布于2000年,这个版本引入了Servlet Filter和Servlet Listener的概念。Servlet Filter允许开发者在请求到达目标Servlet之前或之后对其进行拦截和处理,用于实现如日志记录、性能监控、...
在Java的Web开发中,Servlet和Listener是两个非常重要的组件,它们构成了动态Web应用程序的核心部分。Servlet主要负责处理客户端的请求并返回响应,而Listener则用于监听和响应各种Web应用程序中的事件。本教程将...
2. Servlet Listener:Servlet Listener 是一种特殊的 Servlet,可以对客户端的请求进行监听和处理。 在编写 Servlet 程序时,需要注意以下几点: 1. 需要继承 javax.servlet.http.HttpServlet 接口。 2. 需要重写...
通过`servletListener`这个文件名,我们可以推测这是一个关于Servlet监听器技术的示例代码或教程。可能包含如何创建监听器类,如何实现各种接口方法,以及如何在项目中部署和使用监听器等内容。深入学习这部分知识,...
在Java Web开发中,Servlet监听器(Servlet Listener)扮演着重要的角色,它是Servlet规范的一部分,允许开发者对Web应用程序中的特定事件进行监听和响应。在这个范例中,我们将深入探讨如何利用监听器来统计在线...
Servlet中的八大Listener是Java Web开发中的重要组成部分,它们允许开发者监听和响应Web应用程序中的特定事件。这些Listener提供了在Servlet容器(如Tomcat)管理的生命周期事件上的扩展点,使得我们能够在恰当的...
此外,为了更好地组织代码和实现模块化,可能会使用到Servlet Filter和Servlet Listener等高级特性。 在开发过程中,开发者可能使用了Eclipse、IntelliJ IDEA等IDE,配合Tomcat、Jetty等应用服务器进行部署和测试。...
8. **Servlet Filter和Servlet Listener**:如何利用Filter拦截请求和响应,以及监听应用事件。 9. **Web应用部署**:介绍如何在Tomcat或其他应用服务器上部署JSP和Servlet应用。 学习这些内容对于理解J2EE Web开发...
Servlet Listener则可以监听特定事件,如Session创建、销毁,应用启动、关闭等,实现相应功能。 7. **异常处理**:良好的异常处理机制可以确保系统的稳定性和用户体验。在Servlet中,可以使用try-catch-finally结构...
- 学习Servlet Filter和Servlet Listener,它们可以拦截请求、修改响应或监听Web应用的事件。 10. **部署和运行**: - 使用Tomcat或其他Web服务器部署和运行Servlet和JSP应用。 在学习过程中,实践非常重要,...
6. Servlet Filter和Servlet Listener:实现请求拦截和监听器功能,如登录检查、日志记录等。 通过这个项目,学生可以深入理解Web应用开发的基本流程,掌握JSP、Servlet和MySQL的综合运用,同时了解如何组织和设计...
此外,书中可能还会涉及Servlet Filter和Servlet Listener,它们是Servlet容器中的重要组件,可用于拦截请求、监听事件,实现诸如登录验证、日志记录等功能。 对于JSP,书中会介绍EL(Expression Language)和JSTL...
Web.xml 中的 listener、filter、servlet 加载顺序及其详解 在 Web 应用程序中,web.xml 文件扮演着非常重要的角色,它定义了 Web 应用的结构和配置。其中,listener、filter、servlet 是三个非常重要的概念,它们...
Servlet、Filter和Listener是Java Web开发中的核心组件,它们在构建动态Web应用程序中扮演着重要角色。下面将分别深入解析这三个概念。 **Servlet接口** Servlet是Java编程语言中定义的一个接口,它允许开发者创建...