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

       监听器概述

       监听器

       现实生活中的监听流程:

       

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

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

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

       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页面为:

   


    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值