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,它有三個方法,一個在新增屬性時呼叫,一個在替換屬性時呼叫,最後一個是在移除屬性時呼叫。
l javaWeb中完成編寫監聽器:
Ø 寫一個監聽器類:要求必須去實現某個監聽器介面;
Ø 註冊,是在web.xml中配置來完成註冊!
l 事件物件:
Ø 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> |
[崔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;