2020-03-25

(一)监听器的概述


1、什么是监听器

    监听器就是一个实现了特定接口的Java类,这个Java类用于监听另一个Java类的方法调用,或者属性的改变。当被监听对象发生上述事件后,监听器某个方法将会立即被执行


2、监听器的用途

    用来监听其他对象的变化的,主要应用在图形化界面的开发上

    例如Java中的GUI、Android等,都有大量的监听器的使用


3、监听器的术语

    事件源:指的是被监听对象(汽车)

    监听器:指的是监听的对象(报警器)

    事件源和监听器绑定:在汽车上安装报警器

    事件:指的是事件源对象的改变(踹了汽车一脚),主要功能是获得事件源对象


(二)监听器的入门


1、监听器的入门程序

 

(三)Servlet中的监听器


一、Servlet中的监听器简介


    在Servlet中定义了多种类型的监听器,它们用于监听的事件源分别是ServletContext、HttpSession和ServletRequest这三个域对象


二、Servlet中的监听器的分类


1、一类:监听三个域对象的创建和销毁的监听器(三个)

2、二类:监听三个域对象的属性变更(属性添加、移除、替换)的监听器(三个)

3、三类:监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听(两个)


(四)ServletContextListener监听器的使用


一、ServletContextListener监听器的作用

    用来监听ServletContext域对象的创建和销毁的监听器


二、ServletContext创建和销毁


1、创建:在服务器启动的时候,为每个Web应用创建单独的ServletContext对象

2、销毁:在服务器关闭的时候,或者项目从Web服务器中移除的时候


三、ServletContextListener监听器的方法


1、监听ServletContext对象的创建

        contextInitialized(ServletContextEvent sce)

2、监听ServletContext对象的销毁

        contextDestroyed(ServletContextEvent sce)


四、编写监听器


1、监听器的代码

2、监听器的配置


五、ServletContextListener的企业用途


1、加载框架的配置文件

Spring框架提供了一个核心监听器叫ContextLoaderListener


2、定时任务调度


(五)HttpSessionListener监听器的使用


一、HttpSessionListener监听器作用

    用来监听HttpSession对象的创建和销毁


二、HttpSession创建和销毁

    创建:

        服务器端第一次调用getSession()方法的时候

    销毁:

        非正常关闭服务器(正常关闭服务器Session会被序列化)

        Session过期(默认过期时间30分钟)

        手动调用session.invalidate()方法


三、HttpSessionListener监听器的方法


1、监听HttpSession对象创建

        sessionCreated(HttpSessionEvent se)

2、监听HttpSession对象销毁

        sessionDestroyed(HttpSessionEvent se)


四、编写监听器监听HttpSession对象创建和销毁


1、监听器的代码

2、监听器的配置

3、问题:

    访问HTML是否会创建Session?

    访问JSP是否会创建Session?

    访问Servlet是否会创建Session?


(六)ServletRequestListener监听器的使用


一、ServletRequestListener监听器的作用

    用于监听ServletRequest对象的创建和销毁


二、ServletRequest对象的创建和销毁

    创建:从客户端向服务器发送一次请求,服务器就会创建Request对象

    销毁:服务器对这次请求作出了响应之后,Request对象就销毁了


三、ServletRequestListener监听器的方法


1、监听ServletRequest对象的创建

        requestInitialized(ServletRequestEvent sre)

2、监听ServletRequest对象的销毁

        requestDestroyed(ServletRequestEvent sre)


四、编写监听器代码


1、监听器代码

2、监听器配置

3、问题:

    访问HTML页面是否创建请求对象?会

    访问JSP页面是否创建请求对象?会

    访问Servlet是否创建请求对象?会


(七)统计当前在线人数的案例

 此时获取初始值,进行+1操作。

    如果Session销毁了,获取该值进行-1操作


二、代码实现


1、创建ServletContextListener进行初始化


2、创建HttpSessionListener


3、配置监听器


4、创建JSP页面


(八)监听三个域对象的属性变更的监听器


一、三类监听器


1、ServletContextAttributeListener

监听ServletContext对象中的属性变更(属性添加、移除、替换)的监听器

attributeAdded(ServletContextAttributeEvent event)

attributeRemoved(ServletContextAttributeEvent event)

attributeReplaced(ServletContextAttributeEvent event)



2、HttpSessionAttributeListener

监听HttpSession对象中的属性变更(属性添加、移除、替换)的监听器

attributeAdded(HttpSessionBindingEvent event)

attributeRemoved(HttpSessionBindingEvent event)

attributeReplaced(HttpSessionBindingEvent event)


3、ServletRequestAttributeListener

监听ServletRequest对象中的属性变更(属性添加、移除、替换)的监听器

attributeAdded(ServletRequestAttributeEvent srae)

attributeRemoved(ServletRequestAttributeEvent srae)

attributeReplaced(ServletRequestAttributeEvent srae)


二、演示第二类监听器


1、演示HttpSessionAttributeListener

2、配置监听器

3、编写测试的JSP


(九)监听HttpSession中Java类状态改变的监听器


一、第三类监听器概述


1、保存在Session域中的Java类可以有多种状态:绑定到Session中、从Session中解除绑定、随Session对象持久化到一个存储设备中(钝化)、随Session对象从一个存储设备中恢复(活化)


2、Servlet规范中中定义了两个特殊的监听的接口,来帮助Java类了解自己在Session域中的状态,分别是:

HttpSessionBindingListener接口

HttpSessionActivationListener接口

实现了这两个接口的类,是不需要在web.xml中进行配置的


二、HttpSessionBindingListener监听器


1、监听Java类在HttpSession中的绑定和解除绑定的状态的监听器

        valueBound(HttpSessionBindingEvent event)

        valueUnbound(HttpSessionBindingEvent event)


2、测试代码


三、HttpSessionActivationListener监听器


1、监听HttpSession中Java类的钝化和活化的监听器

        sessionDidActivate(HttpSessionEvent se)

        sessionWillPassivate(HttpSessionEvent se)


2、测试代码

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

Context标签可以配置在:

Tomcat/conf/context.xml:所有Tomcat下虚拟主机和虚拟目录下的工程都会序列化Session

Tomcat/conf/Catalina/localhost/context.xml:只有localhost虚拟主机下的所有项目会序列化Session

工程/META-INF/context.xml:只有当前工程才会序列化Session

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 作业: (一)监听器的概述 1、什么是监听器监听器就是一个实现了特定接口的Java类,这个Java类用于监听另一个...
    常樂_b00d阅读 362评论 0 0
  • 本文包括:1、Listener简介2、Servlet监听器3、监听三个域对象创建和销毁的事件监听器4、监听三个域对...
    廖少少阅读 5,985评论 6 28
  • (一)监听器的概述 (一)监听器的概述 1、什么是监听器监听器就是一一个实现了特 定接口的Java类,这个Java...
    H_5a8d阅读 247评论 0 0
  • (三)Servlet中的监听器 一、Servlet中的监听器简介 在Servlet中定义了多种类型的监听器,它...
    你养猪吗阅读 217评论 0 0
  • 监听器(listener) 监听器简介 :监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个...
    奋斗的老王阅读 2,467评论 0 53