web Listener介绍

2024-05-13 13:48
文章标签 介绍 web listener

本文主要是介绍web Listener介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当web运用在web容器中运行时,会产生各种事件(如web启动,停止,用户的session创建,销毁,请求到达等)这些对于web事件开发者都可以监听到。

使用Listener只需要2个步骤

 1)定义Lisenter实现类

[java]  view plain copy
  1. package com.listener;  
  2.   
  3. import javax.servlet.ServletContextEvent;  
  4. import javax.servlet.ServletContextListener;  
  5. import org.apache.log4j.*;  
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8. import org.springframework.context.support.FileSystemXmlApplicationContext;  
  9.   
  10. import com.quartz.QuartzServiceImpl;  
  11. import com.util.DateUtil;  
  12.   
  13. public class WebStartListener implements ServletContextListener{  
  14.     Logger logger = Logger.getLogger(WebStartListener.class);  
  15.   
  16.     @Override  
  17.     public void contextInitialized(ServletContextEvent sce) {  
  18.         // TODO Auto-generated method stub  
  19.         logger.warn("启动");  
  20.           
  21. //      ApplicationContext springContext = new ClassPathXmlApplicationContext(new String[]{"classpath:com/springResource/*.xml"});  
  22. //      QuartzServiceImpl quartzService = (QuartzServiceImpl)springContext.getBean("quartzService");    
  23. //      quartzService.schedule("name=testQuartz2",DateUtil.parse("2012-12-12 23:42:00"));   
  24.     }  
  25.       
  26.     @Override  
  27.     public void contextDestroyed(ServletContextEvent sce) {  
  28.         // TODO Auto-generated method stub  
  29.         logger.warn("关闭");  
  30.     }  
  31.   
  32.   
  33. }  


2)配置web.xml

[html]  view plain copy
  1.  <!-- web服务器启动监听 -->  
  2. lt;listener>  
  3. <listener-class>com.listener.WebStartListener</listener-class>  
  4. lt;/listener>  

 

 

 

servlet内置listener

l ServletContextListener
    [接口方法] contextInitialized()与 contextDestroyed()
    [接收事件] ServletContextEvent
    [触发场景] 在Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。
    l ServletContextAttributeListener
    [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
    [接收事件] ServletContextAttributeEvent
    [触发场景] 若有对象加入为application(ServletContext)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、attributeRemoved()。
    l HttpSessionListener
    [接口方法] sessionCreated()与sessionDestroyed ()
    [接收事件] HttpSessionEvent
    [触发场景] 在session(HttpSession)对象建立或被消灭时,会分别呼叫这两个方法。
    l HttpSessionAttributeListener
    [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
    [接收事件] HttpSessionBindingEvent
    [触发场景] 若有对象加入为session(HttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。
    l ServletRequestListener
    [接口方法] requestInitialized()与 requestDestroyed()
    [接收事件] RequestEvent
    [触发场景] 在request(HttpServletRequest)对象建立或被消灭时,会分别呼叫这两个方法。
    l ServletRequestAttributeListener
    [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
    [接收事件] HttpSessionBindingEvent
    [触发场景] 若有对象加入为request(HttpServletRequest)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。
    l HttpSessionBindingListener
    [接口方法] valueBound()与valueUnbound()
    [接收事件] HttpSessionBindingEvent
    [触发场景] 实现HttpSessionBindingListener接口的类别,其实例如果被加入至session(HttpSession)对象的属性中,则会呼叫 valueBound(),如果被从session(HttpSession)对象的属性中移除,则会呼叫valueUnbound(),实现HttpSessionBindingListener接口的类别不需在web.xml中设定。
    l HttpSessionActivationListener
    [接口方法] sessionDidActivate()与 sessionWillPassivate()
    [接收事件] HttpSessionEvent
    [触发场景] Activate与Passivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象重新加载JVM时所采的动作称之为Activate,所以容易理解的,sessionDidActivate()与 sessionWillPassivate()分别于Activeate后与将Passivate前呼叫。

这篇关于web Listener介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985879

相关文章

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加