0
点赞
收藏
分享

微信扫一扫

servlet 监听器


Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。下面将介绍几种常用的监听器,以及它们都适合运用于那些环境。


分类及介绍:
1. ServletContextListener:用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。

public class QuartzListener implements ServletContextListener {   

    private Logger logger = LoggerFactory.getLogger(QuartzListener.class);   

    public void contextInitialized(ServletContextEvent sce) {   

    }   

    /**  
     *在服务器停止运行的时候停止所有的定时任务  
     */  
    @SuppressWarnings("unchecked")   
    public void contextDestroyed(ServletContextEvent arg0) {   
        try {   
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();   
            List<JobExecutionContext> jobList = scheduler.getCurrentlyExecutingJobs();   
            for (JobExecutionContext jobContext : jobList) {   
                Job job = jobContext.getJobInstance();   
                if (job instanceof InterruptableJob) {   
                    ((InterruptableJob) job).interrupt();   
                }   
            }   
            scheduler.shutdown();   
        } catch (SchedulerException e) {   
            logger.error("shut down scheduler happened error", e);   
        }   
    }   
}



2. ServletContextAttributeListener:用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性,监听器类需要实现javax.servlet.ServletContextAttributeListener接口。



3. HttpSessionListener:用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。



/**  
 *   
 * 会话监听器  
 * <p />  
 *  
 */  
public class SessionListener implements HttpSessionListener {   

    @Override  
    public void sessionCreated(HttpSessionEvent arg0) {   

    }   

    @Override  
    public void sessionDestroyed(HttpSessionEvent event) {   
        HttpSession session = event.getSession();   
        User user = (UcmSession) session.getAttribute("currUser");   
        if (user != null) {   
            //TODO something   
        }   
    }   

}



4. HttpSessionActivationListener:用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。



5. HttpSessionAttributeListener:用于监听Session对象属性的改变事件,监听器类需要实现javax.servlet.http.HttpSessionAttributeListener接口。



部署:


监听器的部署在web.xml文件中配置,在配置文件中,它的位置应该在过滤器的后面Servlet的前面




web.xml配置文件:



<!-- Quartz监听器 -->   
<listener>   
    <listener-class>   
        com.flyer.lisenter.QuartzListener   
    </listener-class>   
</listener>




黑色头发:http://heisetoufa.iteye.com/


举报

相关推荐

0 条评论