码迷,mamicode.com
首页 > 编程语言 > 详细

Java Web学习(37):Listener学习(一)

时间:2016-08-16 14:49:31      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

       监听器概述

       监听器

       现实生活中的监听流程:

       技术分享

       现实生活中的监听器的定义

       监听器是专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听对象发生变化

时,立即采取相应的行动。

       Web监听器

       下面是统计用户在线人数的监听流程:

       技术分享

       Web监听器

       Web监听器在Servlet规范下:

       技术分享

       Web监听器是Servlet规范中定义的一种特殊类。

       Web监听器用于监听ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件。

       Web监听器用于监听域对象的属性发生修改的事件。

       Web监听器可以在事件发生前,可以在发生后做出一些必要的处理。

       监听器的主要用途

       1)统计在线人数和在线用户

       2)系统启动时加载初始化信息 

       3)统计网站访问量

       4)跟Spring整合

       5)便于自动化管理

       6)可以活化钝化人数和日志,便于服务器的关闭和重启。

       第一个Web监听器实例讲解

       创建Web监听器的步骤

       1)创建一个实现监听器接口的类

       2)使用注解或者配置web.xml文件

       第一个Web监听器实例

       FirstListener.java源代码:

package com.listener;


import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;


/**
 * Application Lifecycle Listener implementation class FirstListener
 *
 */
@WebListener("This is first Listener")
public class FirstListener implements ServletContextListener {


    /**
     * Default constructor. 
     */
    public FirstListener() {
    	
    }
 
	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextInitialized");
    	
    }
    
	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextDestroyed");
    }
	
}

       运行结果:

       我们编一个JSP页面,然后启动Tomcat服务器,访问这个JSP页面就会得到如下结果。

       技术分享

       监听器的启动顺序

       按照web.xml配置文件中的注册监听器的顺序进行,注解无法达到这种效果。

       技术分享

       Web项目中的三大组件Servlet、Filter以及Listener的启动顺序是:

       技术分享

       监听器的分类

       (1)按照监听的对象划分

       1)用于监听应用程序环境对象(ServletContext)的事件监听器

       2)用于监听用户会话对象(HttpSession)的事件监听器

       3)用于监听请求信息对象(ServletRequest)的事件监听器

       (2)按照监听的事件划分

       1)监听域对象自身的创建和销毁的事件监听器

        技术分享

       2)监听域对象中的属性的增加和删除的事件监听器

       技术分享

       3)监听绑定到HttpSession域中的某个对象的状态的事件监听器

       技术分享

       Web八大监听器详解

       我们根据第二种分类进行详细的讲解

       ServletContextListener实例

       MyServletContextListener.java源代码:

package com.listener;


import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;


/**
 * Application Lifecycle Listener implementation class FirstListener
 *
 */
@WebListener
public class MyServletContextListener implements ServletContextListener {


    /**
     * Default constructor. 
     */
    public MyServletContextListener() {
    	
    }
 
	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextInitialized");
    	
    }
    
	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextDestroyed");
    }
	
}

       运行结果:

       技术分享

       HttpSessionListener实例

       MyHttpSessionListener.java源代码:

package com.listener;


import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


/**
 * Application Lifecycle Listener implementation class MyHttpSessionListener
 *
 */
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {


    /**
     * Default constructor. 
     */
    public MyHttpSessionListener() {
    	
    }


	/**
     * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
     */
    public void sessionCreated(HttpSessionEvent httpSessionEvent)  { 
    	System.out.println("sessionCreated");
    }


	/**
     * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
     */
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent)  { 
    	System.out.println("sessionDestroyed");
    }
	
}

       运行结果:

       技术分享

       技术分享

       ServletRequestListener实例

        MyServletRequest.java源代码:

package com.listener;


import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;


/**
 * Application Lifecycle Listener implementation class MyServletRequestListener
 *
 */
@WebListener
public class MyServletRequestListener implements ServletRequestListener {


    /**
     * Default constructor. 
     */
    public MyServletRequestListener() {
    	
    }


	/**
     * @see ServletRequestListener#requestDestroyed(ServletRequestEvent)
     */
    public void requestDestroyed(ServletRequestEvent servletRequestEvent)  { 
    	System.out.println("requestDestroyed");
    }


	/**
     * @see ServletRequestListener#requestInitialized(ServletRequestEvent)
     */
    public void requestInitialized(ServletRequestEvent servletRequestEvent)  { 
    	System.out.println("requestInitialized");
    }
	
}

       运行结果:

       技术分享

       以上几个监听器使用的JSP页面为:

   技术分享


    

Java Web学习(37):Listener学习(一)

标签:

原文地址:http://blog.csdn.net/erlian1992/article/details/52219793

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!