IT兄弟連 JavaWeb教程 監聽器1

1  基本概念java

監聽器是一個專門用於對其餘對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生狀況時,當即採起相應的行動。監聽器其實就是一個實現特定接口的普通java程序,這個程序專門用於監聽另外一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件後,監聽器某個方法當即被執行。web

JavaWeb中的監聽器是Servlet規範中定義的一種特殊類,它用於監聽web應用程序中的ServletContext,HttpSession和ServletRequest等域對象的建立於銷燬時間,以及監聽這些域對象中的屬性發生修改的事件。服務器

 

2  Servlet監聽器的分類app

在Servlet規範中定義了多種類型的監聽器,它們用於監聽的事件源分別爲ServletletContext、HttpSession和ServletRequest這三個域對象。ide

Servlet規範針對這三個對象上的操做,又把多種類型的監聽器劃分爲三種類型:xml

●  監聽域對象自身的建立和銷燬的事件監聽器。對象

●  監聽域對象中的屬性的增長和刪除的事件監聽器。接口

●  監聽綁定到HttpSession域中的某個對象的狀態的事件監聽器。事件

 

3  監聽ServletContext域對象的建立和銷燬ip

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對象進行監聽了。

相關文章
相關標籤/搜索