IT兄弟連 JavaWeb教程 監聽器1
- 2019 年 10 月 5 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/ITXDL123/article/details/90718861
1 基本概念
監聽器是一個專門用於對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時,立即採取相應的行動。監聽器其實就是一個實現特定介面的普通java程式,這個程式專門用於監聽另一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件後,監聽器某個方法立即被執行。
JavaWeb中的監聽器是Servlet規範中定義的一種特殊類,它用於監聽web應用程式中的ServletContext,HttpSession和ServletRequest等域對象的創建於銷毀時間,以及監聽這些域對象中的屬性發生修改的事件。
2 Servlet監聽器的分類
在Servlet規範中定義了多種類型的監聽器,它們用於監聽的事件源分別為ServletletContext、HttpSession和ServletRequest這三個域對象。
Servlet規範針對這三個對象上的操作,又把多種類型的監聽器劃分為三種類型:
● 監聽域對象自身的創建和銷毀的事件監聽器。
● 監聽域對象中的屬性的增加和刪除的事件監聽器。
● 監聽綁定到HttpSession域中的某個對象的狀態的事件監聽器。
3 監聽ServletContext域對象的創建和銷毀
ServletContextListener介面用於監聽ServletContext對象的創建和銷毀事件。實現了ServletContextListener介面的類都可以對ServletContext對象的創建和銷毀進行監聽。
當ServletContext對象被創建時,激發contextInitialized(ServletContextEvent event)方法。
當ServletContext對象被銷毀時,激發contextDestoryed(ServletContextEvent event)方法。
ServletContext域對象創建和銷毀時機:
創建:伺服器啟動針對每一個Web應用創建ServletContext。
銷毀:伺服器關閉前先關閉代表每一個Web應用的ServletContext。
範例:編寫一個MyServletContextListener類,實現ServletContextListener介面,監聽ServletContext對象的創建和銷毀。
● 編寫監聽器,程式碼如下:
package com.xdl.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* MyServletContextListener類實現了ServletContextListener介面
* 因此可以對ServletContext對象的創建和銷毀這兩個動作進行監聽
*/
public class MyServletContextListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext對象創建");
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext對象銷毀");
}
}
● 在web.xml文件中註冊監聽器
● 我們在上面中講到,要想監聽事件源,那麼必須將監聽器註冊到事件源上才能夠實現對事件源的行為動作進行監聽,在JavaWeb中,監聽的註冊時在web.xml文件中進行配置的。詳細配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<listener>
<description>ServletContextListener監聽器</description>
<listener-class>com.xdl.listener.MyServletContextListener</listener-class>
</listener>
</web-app>
經過這兩個步驟,我們就完成了監聽器的編寫和註冊,Web伺服器在啟動時,就會自動把在web.xml文件中配置的監聽器註冊到ServletContext對象上,這樣開發好的MyServletContextListener監聽器就可以對ServletContext對象進行監聽了。