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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章