美文网首页
JavaWeb三大组件——Listener监听器

JavaWeb三大组件——Listener监听器

作者: 是新来的啊强呀 | 来源:发表于2020-03-20 14:52 被阅读0次

Listener监听器概念:是web的三大组件之一

事件监听机制

  • 事件:一个事情
  • 事件源:事件发生的地方
  • 监听器:一个对象
  • 注册监听:将事件、事件源、监听器绑定在一起。当事件源发生某个事件后,执行监听器。

ServletContextListener:监听ServletContext对象的创建和销毁

  • 方法:
    void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
    void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法
  • 步骤:
    1. 定义一个类,实现ServletContextListener接口
    2. 复写方法
    3. 配置
      1. web.xml配置方式
<!--配置监听器-->
<listener>
    <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
</listener>

<!-- 指定初始化信息-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>

      2. 注解配置方式:
            * @WebListener

代码实现

package cn.itcast.web.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class ContextLoaderListener implements ServletContextListener {
    /**
     * 监听ServletContextEvent对象创建的,ServletContextEvent对象服务器启动后自动被调用
     * 在服务器启动后自动创建
     * @param sce
     */
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //加载资源文件
        //1. 获取ServletContext对象
        ServletContext servletContext = sce.getServletContext();
        //2. 加载资源文件
        String contextConfigLocation = servletContext.getInitParameter("contextConfigLocation");
        //3. 获取真实路径
        String realPath = servletContext.getRealPath(contextConfigLocation);
        //4. 加载进内存
        try{
            FileInputStream fis = new FileInputStream(realPath);
            System.out.println(fis);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


        System.out.println("ServletContext对象被创建");

    }

    /**
     * 当服务器正常关闭后,ServletContext对象被销毁。当服务器正常关闭后改方法被调用
     * @param sce
     */
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext对象被销毁");

    }
}

相关文章

网友评论

      本文标题:JavaWeb三大组件——Listener监听器

      本文链接:https://www.haomeiwen.com/subject/qcycyhtx.html