Servlet监听器

简介

监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。

监听器的分类:

  1) 监听域对象自身的创建和销毁的事件监听器

  2) 监听域对象中的属性的增加和删除的事件监听器

  3) 监听绑定到 HttpSession 域中的某个对象的状态的事件监听器

如何编写监听器:

  1) 编写实现了监听器接口的Java 类

      public class HelloServletContextListner implements ServletContextListener{...}

  2) 对于第一种和第二种监听器需要在web.xml 中进行注册:

监听域对象自身的创建和销毁的事件监听器

  域对象创建和销毁的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象的创建和销毁事件的监听器。

  域对象的创建和销毁时机:

  

  1. ServletContextListener,是最常用的 Listener, 可以在当前 WEB 应用被加载时对当前 WEB 应用的相关资源进行初始化操作:创建数据库连接池, 创建 Spring 的 IOC 容器, 读取当前 WEB 应用的初始化参数 ...

  2. ServletRequestListener,

3.HttpSessionListener

在每个监听器中都要两个方法:

  > 在域对象创建后立即被调用的方法

  > 在域对象销毁前被调用的方法

方法的参数,以ServletContextEvent 为例: getServletContext() 获取 ServletContext

域对象中属性的变更的事件监听器(了解)

  1). 监听 ServletContext, HttpSession, ServletRequest 中添加属性, 替换属性, 移除属性的事件监听器.

  2). 以 ServletRequestAttributeListener 为例:

//添加属性时被调用
public void attributeAdded(ServletRequestAttributeEvent srae) {
    System.out.println("向 request 中添加了一个属性...");
}

//移除属性时被调用
@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
    System.out.println("从 request 中移除了一个属性...");
}

//替换属性时被调用.
@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
    System.out.println("request 中属性替换了...");
}

  3). 这三个 ServletContextAttributeListener,ServletRequestAttributeListener, HttpSessionAttributeListener 监听器较少被使用.

  4). API:

    ServletRequestAttributeEvent:

      > getName(): 获取属性的名字
         > getValue(): 获取属性的值.

感知 Session 绑定的事件监听器

1. HttpSessionBindingListener(该监听器较少被使用)

  1). 监听实现了该接口的 Java 类的对象被绑定到 session 或从 session 中解除绑定的事件.

//当前对象被绑定到 session 时调用该方法
public void valueBound(HttpSessionBindingEvent event)

//当前对象从 session 中解除绑定调用该方法
public void valueUnbound(HttpSessionBindingEvent event)

  2). 注意: 该监听器不需要在 web.xml 文件中进行配置.

  3). HttpSessionBindingEvent:

    getName()
    getValue()
    getSession()

2. HttpSessionActivationListener(该监听器较少被使用)

  1). 监听实现了该接口和 Serializable 接口(若不实现,则只能写到磁盘上,不能读取出来)的 Java 类的对象随 session 钝化和活化事件

    > 活化: 从磁盘中读取 session 对象

    > 钝化: 向磁盘中写入 session 对象

    > session 对象存储在tomcat 服务器的 work\Catalina\localhost\contextPath 目录下. SESSION.SER

  2). 该监听器不需要在 web.xml 文件中进行配置.

  3).

//在活化之后被调用.
public void sessionDidActivate(HttpSessionEvent se)

//在钝化之前被调用
public void sessionWillPassivate(HttpSessionEvent se)

HttpSessionEvent: getSession()

应用

  统计当前在线人数列表

时间: 2024-10-14 12:15:19

Servlet监听器的相关文章

Java Web开发——Servlet监听器

一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件. 监听对象: 1.ServletContext:application,整个应用只存在一个 2.HttpSession:session,针对每一个对话 3.ServletRequest:request,针对每一个客户请求 监听内容:创建.销毁.属性改变

servlet监听器Listener(理论+例子)

Listener采用了观察者模式(24种模式之一),Listener是servlet的监听器,他可以监听客户端的请求.服务器端的操作等, 通过监听器,可以自动激发一些操作.比如:监听在线用户数量 当增加一个HttpSession时,就会激发sessinCreated(HttpSessionEvent sce)方法,这样就可以给在线人数+1了. 常见的监听器接口: ServletContextAttributeListener 监听对servletContext属性的操作,比如删除.增加.修改属性

servlet监听器;

一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件. 监听对象: 1.ServletContext:application,整个应用只存在一个 2.HttpSession:session,针对每一个对话 3.ServletRequest:request,针对每一个客户请求 监听内容:创建.销毁.属性改变

JavaWeb开发——servlet监听器 listener

一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件, 以及监听这些域对象中属性发生修改的事件. 监听对象: 1.ServletContext:application,整个应用只存在一个 2.HttpSession:session,针对每一个对话 3.ServletRequest:request,针对每一个客户请求 监听内容:创建.销毁.属性改

Servlet监听器(转)

Java Web开发--Servlet监听器 一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件. 监听对象: 1.ServletContext:application,整个应用只存在一个 2.HttpSession:session,针对每一个对话 3.ServletRequest:request,针对

(转)JavaWeb开发——Servlet监听器

一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件. 监听对象: 1.ServletContext:application,整个应用只存在一个 2.HttpSession:session,针对每一个对话 3.ServletRequest:request,针对每一个客户请求 监听内容:创建.销毁.属性改变

Servlet监听器Listener

Listener实在servlet2.3中加入的,主要用于对Session,request,context等进行监控. 使用Listener需要实现响应的接口.触发Listener事件的时候,tomcat会自动调用Listener的方法. 在web.xml中配置标签,一般要配置在<servlet>标签前面,可配置多个,同一种类型也可配置多个 <listener> <listener-class>com.xxx.xxx.ImplementListener</list

JSP的Servlet监听器

JSP的Servlet监听器 来源: http://blog.csdn.net/phoenix_17th/article/details/3868670 Servlet 监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前.发生后可以做一些必要的处理.目前 Servlet2.4 和 JSP2.0 常用的有7个监听器接口,分为3类: 1. Servlet上下文进行监听(Application级): 用于监听 ServletContext 对象的创建和删除以及属性的添加.删除和修改等操作,该

【Servlet】1、Servlet监听器及相关接口

Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前.发生后可以做一些必要的处理. 接口: 目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,其中HttpSessionAttributeListener与 HttpSessionBindingListener 皆使用HttpSessionBindingEvent;HttpSessionListener和 HttpSessionActivationListener则都使用HttpSessionEve

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------