`
ryanflyer
  • 浏览: 101021 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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 = (BrsSession) 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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics