JavaWeb-Listener

竹鼠商人發表於2020-10-23

Listener:監聽器

  • 概念:web三大元件之一
    • 事件監聽機制
      • 事件:一件事情
      • 事件源:事件發生的地方
      • 監聽器:一個物件
      • 註冊監聽:將事件、事件源、監聽器、繫結在一起。當事件源上法生某個事件後,執行監聽器程式碼
    • ServletContextListener:監聽ServletContext物件的建立和銷燬
      • 方法:
        • void contextDestroyed(ServletContextEvent sce):ServletContext物件被銷燬之前會呼叫該方法
        • void contextInitialized(ServletContextEvent sce) :ServletContext物件被建立後會呼叫該方法
      • 步驟:
        1. 定義一個類,實現ServletContextListener介面
        2. 複寫方法
        3. 配置
          1. web.xml
            在這裡插入圖片描述
          2. 註解 :@WebListener
          3. 指定初始化引數:在這裡插入圖片描述
package cn.itcast.web.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.FileInputStream;

@WebListener
public class ContextLoaderListener implements ServletContextListener{

    //監聽ServletContext物件建立的。ServletContext物件伺服器啟動後自動建立
    //伺服器啟動後自動呼叫
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //載入地原始檔
        //獲取ServletContext物件
        ServletContext servletContext = sce.getServletContext();
        //載入在原始檔
        String contextConfigLocation = servletContext.getInitParameter("contextConfigLocation");
        //獲取真實路徑
        String realPath = servletContext.getRealPath(contextConfigLocation);
        //j載入進記憶體
        try{
            FileInputStream fis=new FileInputStream(realPath);
            System.out.println(fis);
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("ServletContext物件被建立了");
    }
    //在伺服器關閉後,ServletContext物件被銷燬,當伺服器正常關閉後,該方法被呼叫
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext物件被銷燬了");
    }
}