監聽器使用

一、因爲監聽器很好的體現了一個事件驅動編程的理念
事件驅動編程中核心對象:
1):事件源:誰發出事件通知,發出消息;也就是事件主體,好比按鈕;
2):事件名稱:發出什麼樣的通知的名稱,好比鼠標到我頭上了,我被別人點了一下;
3):事件響應函數:誰對這個這個事件感興趣,當這個事件發生時要執行什麼樣的操做;
4):事件對象:通常來講,當事件發生時,會產生一個描述該事件的具體對象,包含事件相關信息java

 

監聽器就是一個實現特定接口的普通java程序,這個程序專門用於監聽一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件後,監聽器某個方法將當即被執行。
監聽器也能夠說是咱們WEB中的一個組件。
在Servlet規範中定義了多種類型的監聽器,它們用於監聽的事件源分別爲SerlvetConext(application),HttpSession和ServletRequest這三個做用域對象。web

二、WEB中有哪些監聽器spring

Web中的監聽器都是來監聽做用域對象
request,session,application(ServletContext)
在這裏咱們分紅兩類共6個,一類是做用域生命週期監聽器,一類是做用域屬性監聽器。
下面,咱們再來分別來介紹一下這兩種監聽器:編程

2.3.1 做用域生命週期監聽器
做用域的生命週期監聽器: 負責監聽request,session,application的建立和銷燬.
      ServletRequestListener:
      HttpSessionListener:
      ServletContextListener: 監聽系統啓動時,直接編寫初始化代碼.session

2.3.2 做用域屬性監聽器
做用域的屬性監聽器(添加/刪除/替換屬性):
      ServletRequestAttributeListener:
      HttpSessionAttributeListener:
      ServletContextAttributeListener
app

2.4 建立與使用監聽器
在這裏,我們以ServletContextListener 爲例來實現一個監聽器,其它的監聽器的作法都是差很少的。
第一步:寫一個普通的類,實現ServletContextListener接口
@WebListener()
public class HelloListener implements ServletContextListener{

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("啓動。。。");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("OVER。。。");
    }
}
ide

 

①ContextLoaderListener使用函數

 

ContextLoaderListener監聽器的做用就是啓動Web容器時,自動裝配ApplicationContext的配置信息。由於它實現了ServletContextListener這個接口,在web.xml配置這個監聽器,啓動容器時,就會默認執行它實現的方法。spa

 

三、spring事件.net

 spring事件(Application Event)爲bean與bean之間的消息通訊提供了支持。

Spring的ApplicationContext 提供了支持事件和代碼中監聽器的功能。

Spring 提供瞭如下5中標準的事件(均是ApplicationEvent子類)
    上下文更新事件(ContextRefreshedEvent):該事件會在ApplicationContext被初始化或者更新時發佈。也能夠在調用ConfigurableApplicationContext 接口中的refresh()方法時被觸發。
    上下文開始事件(ContextStartedEvent):當容器調用ConfigurableApplicationContext的Start()方法開始/從新開始容器時觸發該事件。
    上下文中止事件(ContextStoppedEvent):當容器調用ConfigurableApplicationContext的Stop()方法中止容器時觸發該事件。
    上下文關閉事件(ContextClosedEvent):當ApplicationContext被關閉時觸發該事件。容器被關閉時,其管理的全部單例Bean都被銷燬。
    請求處理事件(RequestHandledEvent):在Web應用中,當一個http請求(request)結束觸發該事件。

spring事件須要遵循以下流程

  一、自定義事件,繼承ApplicationEvent
  二、定義事件監聽器,實現ApplicationListener
  三、使用容器發佈事件。(使用ApplicationContext的publishEvent方法來發布)

參考:https://blog.csdn.net/tuzongxun/article/details/53637159

相關文章
相關標籤/搜索