Listener監聽器

什麼是listener?

listener是Javaweb開發中的監聽器,是用於監聽web常見對象 HttpServletRequest ,HttpSession ,ServletContext監聽它們的創建與銷燬 屬性變化 session綁定javaBean


監聽步驟:

  • 創建相應的監聽器
  • 在web.xml中註冊

例子:
1、創建一個ServletContext的監聽器:
這個對象是在服務器啓動時創建的,在服務器關閉時銷燬的。

package com.yanglin.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

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對象銷燬了");
    }
}

2、web.xml中註冊

<listener>
    <listener-class>com.yanglin.listener.MyServletContextListener</listener-class>
</listener>

這裏寫圖片描述


Javaweb開發中常見監聽器

  • 監聽域對象的創建與銷燬

    • 監聽ServletContext創建與銷燬 實現:ServletContextListener
    • 監聽HttpSession創建與銷燬 實現HttpSessionListener
    • 監聽HttpServletRequest創建與銷燬 實現ServletRequestListener
  • 監聽域對象的屬性變化

    • 監聽ServletContext屬性變化 ServletContextAttributeListener
    • 監聽HttpSession屬性變化 HttpSessionAttributeListener
    • 監聽HttpServletRequest屬性變化 ServletRequestAttributeListener
  • 監聽session綁定javaBean

    • 它是用於監聽javaBean對象是否綁定到了session域 HttpSessionBindingListener
    • 它是用於監聽javaBean對象的活化與鈍化 HttpSessionActivationListener

HttpSession對象的創建與銷燬
這裏寫圖片描述

演示了Request域對象中屬性變化
這裏寫圖片描述

在java的監聽機制中,它的監聽器中的方法都是有參數的,參數就是事件對象,而我們可以通過事件對象直接獲取事件源。

session綁定javaBean
1.javaBean對象自動感知被綁定到session中.HttpSessionBindingListener 這個接口是由javaBean實現的,並且不需要在web.xml文件中註冊.但是需要讓bean對象實現HttpSessionBindingListener
這裏寫圖片描述
在jsp中
這裏寫圖片描述

2.javabean對象可以活化或鈍化到session中。
HttpSessionActivationListener如果javaBean實現了這個接口,那麼當我們正常關閉服務器時,session中的javaBean對象就會被鈍化到我們指定的文件中。
當下一次在啓動服務器,因爲我們已經將對象寫入到文件中,這時就會自動將javaBean對象活化到session中。
這裏寫圖片描述
我們還需要個context.xml文件來配置鈍化時存儲的文件
在meta-inf目錄下創建一個context.xml文件

<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="it315"/>
                    </Manager>
                </Context>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章