博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Listener介绍
阅读量:5246 次
发布时间:2019-06-14

本文共 3243 字,大约阅读时间需要 10 分钟。

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

使用Listener只需要2个步骤

 1)定义Lisenter实现类

package com.listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.log4j.*;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;import com.quartz.QuartzServiceImpl;import com.util.DateUtil;public class WebStartListener implements ServletContextListener{	Logger logger = Logger.getLogger(WebStartListener.class);	@Override	public void contextInitialized(ServletContextEvent sce) {		// TODO Auto-generated method stub		logger.warn("启动");		//		ApplicationContext springContext = new ClassPathXmlApplicationContext(new String[]{"classpath:com/springResource/*.xml"});//		QuartzServiceImpl quartzService = (QuartzServiceImpl)springContext.getBean("quartzService");  //		quartzService.schedule("name=testQuartz2",DateUtil.parse("2012-12-12 23:42:00")); 	}		@Override	public void contextDestroyed(ServletContextEvent sce) {		// TODO Auto-generated method stub		logger.warn("关闭");	}}

2)配置web.xml

com.listener.WebStartListener

 

 

 

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前呼叫。

转载于:https://www.cnblogs.com/4wei/archive/2012/12/24/2847260.html

你可能感兴趣的文章
产品从需求到上线的过程抽象
查看>>
MyEclipse不能编译的一种解决方法
查看>>
Android-async-http
查看>>
次小生成树 最小度限制生成树
查看>>
转 RTSP客户端模拟器(TCP方式,Python实现)
查看>>
MongoDB学习笔记(7)--- 条件操作符
查看>>
JavaWeb_ XML文件
查看>>
git 终端常输入命令
查看>>
三色时空门式跑马灯1
查看>>
poj 2312 Battle City
查看>>
Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析
查看>>
web测试中,各类web控件测试点总结
查看>>
SFTP信任公钥配置及JSCH库
查看>>
mysql导入导出sql文件
查看>>
Start all over again
查看>>
BZOJ做题记录[0512~?]
查看>>
sin之舞---蓝桥杯练习
查看>>
java Log4j日志配置详解大全
查看>>
es6中的promise对象
查看>>
Python中的strip用于去除字符串的首位字符。
查看>>