• Listener(监听器)


    1.什么是监听器?
    2.监听器的分类
    3.监听ServletContext对象的销毁和创建
    4.监听ServletRequest对象的销毁和创建

    #什么是监听器?
    在servlet中监听器是实现特定接口的类,当监听器绑定的类发生改变时,监听器会做出反应,举个简单的例子,水壶烧水
    1.水壶(事件源)
    2.水壶里面的温度开关(事件监听器)
    3.水烧开了(事件对象)
    4.温度开关切断电源(响应行为)

    #监听器的分类
    按监听的对象可分为3类
    ServletContext对象,监听器为ServletContextListener
    HttpSession对象,监听器为HttpSessionListener
    ServletRequest对象,监听器为ServletRequestListener

    按监听的内容可分为2类

    ServletContext对象 HttpSession对象 ServletRequest对象
    域对象的销毁域创建 ServletContextListener HttpSessionListener ServletRequestListener
    域对象内的属性发生改变 ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener

    #监听ServletContext对象的销毁和创建
    实现ServletContextListener接口

    package com.mike;
    
    import javax.servlet.ServletContextListener;
    import javax.servlet.ServletContextEvent;
    
    /**
     * @author mike
     * @date 2020-11-21
     * @desc 监听ServletContext域的创建和销毁
     */
    public class MyServletContextListener implements ServletContextListener {
    	@Override
    	public void contextInitialized(ServletContextEvent servletContextEvent) {
    		System.out.println("ServletContext对象创建");
    	}
    
    	@Override
    	public void contextDestroyed(ServletContextEvent servletContextEvent) {
    		System.out.println("ServletContext对象销毁");
    	}
    }
    
    

    注册监听器

     <listener>
            <description>ServletContextListener监听器</description>
            <listener-class>com.mike.MyServletContextListener</listener-class>
        </listener>
    

    启动tomacat服务器会输出 "ServletContext对象创建",因为ServletContext对象是在容器启动创建
    关闭tomacat服务器会输出 "ServletContext对象销毁",因为ServletContext对象在容器关闭时销毁

    #监听ServletRequest对象的销毁和创建
    实现ServletRequestListener接口

    package com.mike;
    
    import javax.servlet.ServletRequestEvent;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.annotation.WebListener;
    
    /**
     * @author mike
     * @date 2020-11-21
     * @desc 监听ServletRequest域创建和销毁
     */
    
    @WebListener //在此使用@WebListener注解注册监听器,就不需要在web.xml注册了
    public class MyServletRequestListener implements ServletRequestListener{
    	@Override
    	public void requestInitialized(ServletRequestEvent servletRequestEvent) {
    		System.out.println("请求创建了");
    	}
    
    	@Override
    	public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
    		System.out.println("请求销毁了");
    	}
    }
    
    

    随便访问一个servlet查看结果
    当请求被创建时输出"请求创建了",当请求完成后被销毁输出"请求销毁了",每一次请求都会被监听

  • 相关阅读:
    Centos7安装redis
    Cookie和Session的区别
    JavaWeb中的域对象
    ServletContext使用介绍
    Java Web核心组件之Servlet的使用介绍
    关于反射的杂谈
    leetcode117search-in-rotated-sorted-array
    23longest-consecutive-sequence
    leetcode24:word-ladder-ii
    leetcode25word-ladder
  • 原文地址:https://www.cnblogs.com/gy1010/p/14016771.html
Copyright © 2020-2023  润新知