Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。下面将介绍几种常用的监听器,以及它们都适合运用于那些环境。
分类及介绍: 1. ServletContextListener:用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
Java代码 - 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接口,或者两个都实现。
Java代码 - /**
- *
- * 会话监听器
- * <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配置文件:
Java代码 - <!-- Quartz监听器 -->
- <listener>
- <listener-class>
- com.flyer.lisenter.QuartzListener
- </listener-class>
- </listener>
|