1. 程式人生 > >JavaWeb三大元件之Listener

JavaWeb三大元件之Listener

三大元件:Servlet、 Listener、Filter

Java中用到監聽器的地方:AWT、SAX,監聽器中肯定有事件源、事件、監聽器。監聽器註冊到事件源,當事件源發生某件特定的事兒的時候,就觸發註冊的監聽器,呼叫監聽器的相應的方法。

JavaWeb中的監聽器

l  事件源:三大域!

Ø  ServletContext

¨      生命週期監聽:ServletContextListener,它有兩個方法,一個在出生時呼叫,一個在死亡時呼叫;

                                     void contextInitialized(

                                     void contextDestroyed

(

¨      屬性監聽:ServletContextAttributeListener,它有三個方法,一個在新增屬性時呼叫,一個在替換屬性時呼叫,最後一個是在移除屬性時呼叫。

Ø  HttpSession

¨      生命週期監聽:HttpSessionListener,它有兩個方法,一個在出生時呼叫,一個在死亡時呼叫;

voidsessionCreated(

                                   void sessionDestroyed(

¨      屬性監聽:HttpSessioniAttributeListener,它有三個方法,一個在新增屬性時呼叫,一個在替換屬性時呼叫,最後一個是在移除屬性時呼叫。

Ø  ServletRequest

¨      生命週期監聽:ServletRequestListener,它有兩個方法,一個在出生時呼叫,一個在死亡時呼叫;

voidrequestInitialized(

                                 void requestDestroyed(

¨      屬性監聽:ServletRequestAttributeListener,它有三個方法,一個在新增屬性時呼叫,一個在替換屬性時呼叫,最後一個是在移除屬性時呼叫。

javaWeb中完成編寫監聽器:

Ø  寫一個監聽器類:要求必須去實現某個監聽器介面;

Ø  註冊,是在web.xml中配置來完成註冊!

事件物件:

Ø  ServletContextEvent:ServletContext getServletContext()

Ø  HttpSessionEvent:HttpSession getSession()

Ø  ServletRequest:

¨      ServletContext getServletContext();

¨      ServletReques getServletRequest();

-------------------------------------------------------------------------------

Ø  ServletContextAttributeEvent

                   String getName():獲取當前操作的屬性名;

                  Object getValue():獲取當前操作的屬性值;

                  ServletContext getServletContext():獲取ServletContext物件。

Ø HttpSessionBindingEvent

                 String getName():獲取當前操作的屬性名;

                Object getValue():獲取當前操作的屬性值;

                HttpSession getSession():獲取當前操作的session物件。

Ø ServletRequestAttributeEvent

                String getName():獲取當前操作的屬性名;

               Object getValue():獲取當前操作的屬性值;

              ServletContext getServletContext():獲取ServletContext物件;

              ServletRequest getServletRequest():獲取當前操作的ServletRequest物件。

感知監聽(都與HttpSession相關)

l  它用來新增到JavaBean上,而不是新增到三大域上!

l  這兩個監聽器都不需要在web.xml中註冊!

 HttpSessionBindingListener:新增到javabean上,javabean就知道自己是否新增到session中了。當某個類實現了該介面後,

可以感知本類物件新增到session中,以及感知從session中移除。例如讓Person類實現HttpSessionBindingListener介面,

那麼當把Person物件新增到session中,或者把Person物件從session中移除時會呼叫下面兩個方法:

Ø  public void valueBound(HttpSessionBindingEvent event):當把監聽器物件新增到session中會呼叫監聽器物件的本方法;

Ø  public void valueUnbound(HttpSessionBindingEvent event):當把監聽器物件從session中移除時會呼叫監聽器物件的本方法;

HttpSessionActivationListener:Tomcat會在session從時間不被使用時鈍化session物件,所謂鈍化session,就是把session

通過序列化的方式儲存到硬碟檔案中。當用戶再使用session時,Tomcat還會把鈍化的物件再活化session,所謂活化就是把硬碟

檔案中的session在反序列化回記憶體。當session被Tomcat鈍化時,session中儲存的物件也被純化,當session被活化時,也會把

session中儲存的物件活化。如果某個類實現了HttpSessionActiveationListener介面後,當物件隨著session被鈍化和活化時,

下面兩個方法就會被呼叫:

Ø  public void sessionWillPassivate(HttpSessionEvent se):當物件感知被活化時呼叫本方法;

Ø  public void sessionDidActivate(HttpSessionEvent se):當物件感知被鈍化時呼叫本方法;

注意,因為鈍化和活化session,其實就是使用序列化和反序列化技術把session從記憶體儲存到硬碟,和把session從硬碟載入到記憶體。

這說明如果Person類沒有實現Serializable介面,那麼當session鈍化時就不會鈍化Person,而是把Person從session中移除再鈍化!

這也說明session活化後,session中就不在有Person物件了。

l  配置Tomcat鈍化session的引數,把下面配置檔案放到tomcat\conf\catalina\localhost目錄下!檔名稱為專案名稱。

<Context>

<ManagerclassName="org.apache.catalina.session.PersistentManager"maxIdleSwap="1"[崔1] >

<StoreclassName="org.apache.catalina.session.FileStore"directory="mysession"[崔2] />

</Manager>

</Context>

    訪問專案的index.jsp頁面,這會使Tomcat建立Session物件,然後等待一分鐘後,檢視Tomcat\work\Catalina\localhost\listener\mysession目錄下是否會產生檔案,如果產生了,說明鈍化session的配置成功了

 [崔1]如果session在1分鐘內沒有使用,那麼Tomcat就會鈍化它

 [崔2]把session序列化到Tomcat\work\Catalina\localhost\listener\mysession目錄下。





相關推薦

JavaWeb三大元件Listener

三大元件:Servlet、 Listener、Filter Java中用到監聽器的地方:AWT、SAX,監聽器中肯定有事件源、事件、監聽器。監聽器註冊到事件源,當事件源發生某件特定的事兒的時候,就觸發註冊的監聽器,呼叫監聽器的相應的方法。 JavaWeb中的監聽器 l 

JavaWeb三大元件監聽器Listener

JavaWeb元件 三大元件 Servlet Listener Filter JavaWeb監聽器 三大域 ServletContext HttpSession ServletRequest 監聽器 生命週期監聽 (兩個方法) 屬性監

Web三大元件 —— Listener

監聽器術語 事件源:被監聽的物件 監聽器:監聽事件源的物件 註冊和繫結:將 事件源 和 監聽器 關聯 事件 : 事件源特定行為稱呼 事件物件 : 等效事件源  可以在監聽器中獲得 事件源的物件 Servlet 域物件以及域物件屬性 

Javaweb三大元件Servlet

Javaweb開發中有很重要的三個元件分別是:Servlet,Filter,Listener。這些元件在Javaweb的開發中起著不同且至關重要的作用,而我們常用的web框架基本都是基於這些基礎元件進行封裝之後的用法,所以對於這些原生的方式進行Javaweb開發也要需要了解的

JavaWeb三大元件過濾器

JavaWeb過濾器 過濾器可以讓請求得到目標資源,也可以不讓請求達到!          * 過濾器有攔截請求的能力,且過濾器是單例模式! 過濾器的實現方法: 1. 寫一個類實現Filter介面(注意匯入的是:javax.servlet.Filter介面) 2. 在w

JavaWeb三大元件 —— Listener監聽器——生命週期監聽器(3個)

目錄 1、JavaWeb八大監聽器概述 2、生命週期監聽器(3個) 3、操作域屬性的監聽器(3個) 4、相關HttpSession的感知監聽器(2個) ==============================================

JavaWeb三大元件(Servlet、Filter、Listener

JavaWeb三大元件指的是:Servlet、Filter、Listener,這三個元件在JavaWeb開發中分別提供不同的功能,然而很多人可能只用過其中一個或者兩個(Servlet、Filter,比如我),很難接觸到第三個元件,因此對原始JavaWeb開

JavaWeb三大元件——Servlet、Filter、Listener

JavaWeb三大元件指的是:Servlet、Filter、Listener,這三個元件在JavaWeb開發中分別提供不同的功能,然而很多人可能只用過其中一個或者兩個(Servlet、Filter,比如我),很難接觸到第三個元件,因此對原始JavaWeb開發還不夠熟悉,在這

JavaWeb三大元件之一Servlet【訪問量統計-ServletContext的應用】

需求 一個專案中所有的資源被訪問都要對訪問量進行累加! 簡單實現 建立一個int型別的變數,用來儲存訪問量,然後把它儲存到ServletContext的域中,這樣可以儲存所有的Servlet都可以訪問到! 最初時,ServletContext中沒有

Web三大元件 —— servlet

本文純屬於個人觀點,如果有不對的地方,還請各位看官多加批評指正,完善我的知識體系。 應用程式:包括 Web 應用程式 和 非 Web 應用程式。 Web應用程式:是一種部署在伺服器上,可以通過Web(瀏覽器)訪問的應用程式。程式的最大好處是使用者很容易訪問應用程式,不需要

Web 專案 tiger 12 註冊 Servlet 三大元件 Servlet

本文導讀 Spring Boot 由於預設以 Jar 包方式啟動嵌入式的 Servlet 容器來啟動 Spring Boot 的 web 應用,沒有 web.xml 檔案,所以無法再像以前一樣通過在 web.xml 配置來使用 Servlet ,但是 Spring Bo

JavaWeb三大元件

1 Servlet 1.1 生命週期方法 1.1.1 void init(ServletConfig): 載入和例項化:當客戶端傳送一個請求時,Servlet容器(Tomcat)會查詢記憶體中是否存在Servlet例項,如果不存在,就建立一個Servlet例項。如果存在Se

Java NIO 三大元件 Buffer

NIO大三元件 之Buffer 一、什麼是Buffer Buffer是用於特定原始型別的資料的容器。 它的實質就是一組陣列,用於儲存不同型別的資料。 二、緩衝區的型別 緩衝區型別除了Boolean值型別外,其餘基本型別都含有。 NIO中定義的抽象緩衝區物件如下(均繼承至Buffer抽象類): ByteBuf

JavaWeb三大元件 Servlet、Listener、Filter

1.Servlet Servlet 是一個 Java程式,是在伺服器上執行以處理客戶端請求並做出響應的程式  Servlet的生命週期 是一個servlet的從初始化(出生)到銷燬(死亡)。   Init() -> service() -

javaweb三大元件

JavaWeb三大元件 都需要在web.xml中進行配置 Servlet Listener(2個感知監聽器不需要配置) Filter 過濾器 它會在一組資源(jsp、servlet、.css、.html等等)的前面執行! 它可以讓請求得到目標資源,也可以不讓請求達

javaWeb學習Listener監聽

host idle .get 序列化 name mov 面試題 感知 就是 】 一、監聽器Listener javaEE包括13門規範 在課程中主要學習 servlet技術 和 jsp技術 其中 servlet規範包括三個技術點:servlet l

Spring Boot 、註冊Servlet三大元件Servlet、Filter、Listener

由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案 public class MyServlet extends HttpServlet { protected void doPost(HttpS

JavaWeb基礎Listener和Filter

Listener 監聽器 能做什麼事? 監聽某一個事件的發生, 狀態的改變。 監聽器的內部機制 其實就是介面回撥. 介面回撥 需求: A在執行迴圈,當迴圈到5的時候

SpringBoot1.5.12.RELEASE註冊Servlet三大元件【Servlet、Filter、Listener

SpringBoot1.5.12.RELEASE註冊Servlet三大元件【Servlet、Filter、Listener】 1.理由:由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案。 2.註

SpringBoot定義三大元件Servlet,過濾器Filter,監聽器Listener

SpringBoot定義三大元件Servlet,過濾器Filter,監聽器Listener 1.定義元件的配置類: com.example.mybatis2018.config.MyServletConfig package com.example.mybatis2018.config;