2020-03-28

3月25日 ? EL獲取對(duì)象JSTL學(xué)生展示

(一)監(jiān)聽器的概述

1、什么是監(jiān)聽器

? ? 監(jiān)聽器就是一個(gè)實(shí)現(xiàn)了特定接口的Java類,這個(gè)Java類用于監(jiān)聽另一個(gè)Java類的方法調(diào)用,或者屬性的改變。當(dāng)被監(jiān)聽對(duì)象發(fā)生上述事件后,監(jiān)聽器某個(gè)方法將會(huì)立即被執(zhí)行

2、監(jiān)聽器的用途

? ? 用來監(jiān)聽其他對(duì)象的變化的,主要應(yīng)用在圖形化界面的開發(fā)上

? ? 例如Java中的GUI、Android等,都有大量的監(jiān)聽器的使用

3、監(jiān)聽器的術(shù)語(yǔ)

????事件源:指的是被監(jiān)聽對(duì)象(汽車)

????監(jiān)聽器:指的是監(jiān)聽的對(duì)象(報(bào)警器)

????事件源和監(jiān)聽器綁定:在汽車上安裝報(bào)警器

????事件:指的是事件源對(duì)象的改變(踹了汽車一腳),主要功能是獲得事件源對(duì)象

(二)監(jiān)聽器的入門

1、監(jiān)聽器的入門程序

(三)Servlet中的監(jiān)聽器

一、Servlet中的監(jiān)聽器簡(jiǎn)介

? ? 在Servlet中定義了多種類型的監(jiān)聽器,它們用于監(jiān)聽的事件源分別是ServletContext、HttpSession和ServletRequest這三個(gè)域?qū)ο?/p>

二、Servlet中的監(jiān)聽器的分類

1、一類:監(jiān)聽三個(gè)域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器(三個(gè))

2、二類:監(jiān)聽三個(gè)域?qū)ο蟮膶傩宰兏▽傩蕴砑?、移除、替換)的監(jiān)聽器(三個(gè))

3、三類:監(jiān)聽HttpSession中JavaBean的狀態(tài)改變(鈍化、活化、綁定、解除綁定)的監(jiān)聽(兩個(gè))

(四)ServletContextListener監(jiān)聽器的使用

一、ServletContextListener監(jiān)聽器的作用

? ? 用來監(jiān)聽ServletContext域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器

二、ServletContext創(chuàng)建和銷毀

1、創(chuàng)建:在服務(wù)器啟動(dòng)的時(shí)候,為每個(gè)Web應(yīng)用創(chuàng)建單獨(dú)的ServletContext對(duì)象

2、銷毀:在服務(wù)器關(guān)閉的時(shí)候,或者項(xiàng)目從Web服務(wù)器中移除的時(shí)候

三、ServletContextListener監(jiān)聽器的方法

1、監(jiān)聽ServletContext對(duì)象的創(chuàng)建

?? ??? ?contextInitialized(ServletContextEvent sce)

2、監(jiān)聽ServletContext對(duì)象的銷毀

?? ??? ?contextDestroyed(ServletContextEvent sce)

四、編寫監(jiān)聽器

1、監(jiān)聽器的代碼

2、監(jiān)聽器的配置

五、ServletContextListener的企業(yè)用途

1、加載框架的配置文件

Spring框架提供了一個(gè)核心監(jiān)聽器叫ContextLoaderListener

2、定時(shí)任務(wù)調(diào)度

(五)HttpSessionListener監(jiān)聽器的使用

一、HttpSessionListener監(jiān)聽器作用

? ? 用來監(jiān)聽HttpSession對(duì)象的創(chuàng)建和銷毀

二、HttpSession創(chuàng)建和銷毀

? ? 創(chuàng)建:

?? ??? ?服務(wù)器端第一次調(diào)用getSession()方法的時(shí)候

? ? 銷毀:

?? ??? ?非正常關(guān)閉服務(wù)器(正常關(guān)閉服務(wù)器Session會(huì)被序列化)

?? ?? ? Session過期(默認(rèn)過期時(shí)間30分鐘)

?? ?? ? 手動(dòng)調(diào)用session.invalidate()方法

三、HttpSessionListener監(jiān)聽器的方法

1、監(jiān)聽HttpSession對(duì)象創(chuàng)建

????????sessionCreated(HttpSessionEvent se)

2、監(jiān)聽HttpSession對(duì)象銷毀

????????sessionDestroyed(HttpSessionEvent se)

四、編寫監(jiān)聽器監(jiān)聽HttpSession對(duì)象創(chuàng)建和銷毀

1、監(jiān)聽器的代碼

2、監(jiān)聽器的配置

3、問題:

? ? 訪問HTML是否會(huì)創(chuàng)建Session?

? ? 訪問JSP是否會(huì)創(chuàng)建Session?

? ? 訪問Servlet是否會(huì)創(chuàng)建Session?

(六)ServletRequestListener監(jiān)聽器的使用

一、ServletRequestListener監(jiān)聽器的作用

? ? 用于監(jiān)聽ServletRequest對(duì)象的創(chuàng)建和銷毀

二、ServletRequest對(duì)象的創(chuàng)建和銷毀

? ? 創(chuàng)建:從客戶端向服務(wù)器發(fā)送一次請(qǐng)求,服務(wù)器就會(huì)創(chuàng)建Request對(duì)象

? ? 銷毀:服務(wù)器對(duì)這次請(qǐng)求作出了響應(yīng)之后,Request對(duì)象就銷毀了

三、ServletRequestListener監(jiān)聽器的方法

1、監(jiān)聽ServletRequest對(duì)象的創(chuàng)建

?? ??? ?requestInitialized(ServletRequestEvent sre)

2、監(jiān)聽ServletRequest對(duì)象的銷毀

?? ??? ?requestDestroyed(ServletRequestEvent sre)

四、編寫監(jiān)聽器代碼

1、監(jiān)聽器代碼

2、監(jiān)聽器配置

3、問題:

????訪問HTML頁(yè)面是否創(chuàng)建請(qǐng)求對(duì)象?會(huì)

????訪問JSP頁(yè)面是否創(chuàng)建請(qǐng)求對(duì)象?會(huì)

????訪問Servlet是否創(chuàng)建請(qǐng)求對(duì)象?會(huì)

(七)統(tǒng)計(jì)當(dāng)前在線人數(shù)的案例

?此時(shí)獲取初始值,進(jìn)行+1操作。

?? ?如果Session銷毀了,獲取該值進(jìn)行-1操作

二、代碼實(shí)現(xiàn)

1、創(chuàng)建ServletContextListener進(jìn)行初始化

2、創(chuàng)建HttpSessionListener

3、配置監(jiān)聽器

4、創(chuàng)建JSP頁(yè)面

(八)監(jiān)聽三個(gè)域?qū)ο蟮膶傩宰兏谋O(jiān)聽器

一、三類監(jiān)聽器

1、ServletContextAttributeListener

監(jiān)聽ServletContext對(duì)象中的屬性變更(屬性添加、移除、替換)的監(jiān)聽器

attributeAdded(ServletContextAttributeEvent event)

attributeRemoved(ServletContextAttributeEvent event)

attributeReplaced(ServletContextAttributeEvent event)

2、HttpSessionAttributeListener

監(jiān)聽HttpSession對(duì)象中的屬性變更(屬性添加、移除、替換)的監(jiān)聽器

attributeAdded(HttpSessionBindingEvent event)

attributeRemoved(HttpSessionBindingEvent event)

attributeReplaced(HttpSessionBindingEvent event)

3、ServletRequestAttributeListener

監(jiān)聽ServletRequest對(duì)象中的屬性變更(屬性添加、移除、替換)的監(jiān)聽器

attributeAdded(ServletRequestAttributeEvent srae)

attributeRemoved(ServletRequestAttributeEvent srae)

attributeReplaced(ServletRequestAttributeEvent srae)

二、演示第二類監(jiān)聽器

1、演示HttpSessionAttributeListener

2、配置監(jiān)聽器

3、編寫測(cè)試的JSP

(九)監(jiān)聽HttpSession中Java類狀態(tài)改變的監(jiān)聽器

一、第三類監(jiān)聽器概述

1、保存在Session域中的Java類可以有多種狀態(tài):綁定到Session中、從Session中解除綁定、隨Session對(duì)象持久化到一個(gè)存儲(chǔ)設(shè)備中(鈍化)、隨Session對(duì)象從一個(gè)存儲(chǔ)設(shè)備中恢復(fù)(活化)

2、Servlet規(guī)范中中定義了兩個(gè)特殊的監(jiān)聽的接口,來幫助Java類了解自己在Session域中的狀態(tài),分別是:

HttpSessionBindingListener接口

HttpSessionActivationListener接口

實(shí)現(xiàn)了這兩個(gè)接口的類,是不需要在web.xml中進(jìn)行配置的

二、HttpSessionBindingListener監(jiān)聽器

1、監(jiān)聽Java類在HttpSession中的綁定和解除綁定的狀態(tài)的監(jiān)聽器

?? ??? ?valueBound(HttpSessionBindingEvent event)

?? ??? ?valueUnbound(HttpSessionBindingEvent event)

2、測(cè)試代碼

三、HttpSessionActivationListener監(jiān)聽器

1、監(jiān)聽HttpSession中Java類的鈍化和活化的監(jiān)聽器

?? ??? ?sessionDidActivate(HttpSessionEvent se)

?? ??? ?sessionWillPassivate(HttpSessionEvent se)

2、測(cè)試代碼

3、配置完成Session的序列化和反序列化

Context標(biāo)簽可以配置在:

Tomcat/conf/context.xml:所有Tomcat下虛擬主機(jī)和虛擬目錄下的工程都會(huì)序列化Session

Tomcat/conf/Catalina/localhost/context.xml:只有l(wèi)ocalhost虛擬主機(jī)下的所有項(xiàng)目會(huì)序列化Session

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括:1、Listener簡(jiǎn)介2、Servlet監(jiān)聽器3、監(jiān)聽三個(gè)域?qū)ο髣?chuàng)建和銷毀的事件監(jiān)聽器4、監(jiān)聽三個(gè)域?qū)?..
    廖少少閱讀 6,648評(píng)論 6 28
  • (一)監(jiān)聽器的概述 1、什么是監(jiān)聽器 監(jiān)聽器就是一個(gè)實(shí)現(xiàn)了特定接口的Java類,這個(gè)Java類用于監(jiān)聽另一個(gè)J...
    01_ff7c閱讀 228評(píng)論 0 0
  • 監(jiān)聽器(listener) 監(jiān)聽器簡(jiǎn)介 :監(jiān)聽器就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序,這個(gè)程序?qū)iT用于監(jiān)聽另一個(gè)...
    奮斗的老王閱讀 2,674評(píng)論 0 53
  • 參考文章:https://www.cnblogs.com/xdp-gacl/p/3969249.html 1. 概...
    Tian_Peng閱讀 520評(píng)論 0 0
  • 作業(yè): (一)監(jiān)聽器的概述 1、什么是監(jiān)聽器監(jiān)聽器就是一個(gè)實(shí)現(xiàn)了特定接口的Java類,這個(gè)Java類用于監(jiān)聽另一個(gè)...
    常樂_b00d閱讀 453評(píng)論 0 0

友情鏈接更多精彩內(nèi)容