Listener介绍
2014-10-16 21:36
239 查看
当web运用在web容器中运行时,会产生各种事件(如web启动,停止,用户的session创建,销毁,请求到达等)这些对于web事件开发者都可以监听到。
使用Listener只需要2个步骤
1)定义Lisenter实现类
[java] view
plaincopy
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("关闭");
}
}
![](http://p.blog.csdn.net/images/p_blog_csdn_net/Squall1009/listener.gif)
2)配置web.xml
[html] view
plaincopy
<!-- web服务器启动监听 -->
lt;listener>
<listener-class>com.listener.WebStartListener</listener-class>
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前呼叫。
使用Listener只需要2个步骤
1)定义Lisenter实现类
[java] view
plaincopy
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("关闭");
}
}
![](http://p.blog.csdn.net/images/p_blog_csdn_net/Squall1009/listener.gif)
2)配置web.xml
[html] view
plaincopy
<!-- web服务器启动监听 -->
lt;listener>
<listener-class>com.listener.WebStartListener</listener-class>
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前呼叫。
相关文章推荐
- HttpSessionBindingListener使用介绍(在线人数)
- HttpSessionBindingListener接口介绍
- HttpSessionBindingListener接口介绍
- listview 的OnItemClickListener参数介绍
- 关于AutoCompleteTextView中调用setOnItemClickListener中参数调用介绍
- HttpSessionBindingListener接口介绍
- 简单介绍Spring的ContextLoaderListener
- ServletContextListener 介绍
- TraverseListener的介绍
- 【收藏】window.addEventListener介绍说明
- ORACLE 监听LISTENER设置的粗略介绍
- listener监听器介绍
- java常用的Listener介绍
- 三、Listener介绍
- Android: netd中DnsProxyListener的简单介绍
- Servlet介绍(6)-----listener
- listener监听器介绍
- Servlet介绍-listener
- libgdx游戏引擎(二)之ApplicationListener接口介绍
- Web listener 介绍