监听器

笔记:

ServletContextListener监听器的方法

监听ServletContext对象的创建

    contextInitialized(ServletContextEvent sce)

监听ServletContext对象的销毁

     contextDestroyed(ServletContextEvent sce)


编写监听器

1、监听器的代码

2、监听器的配置


ServletContextListener的企业用途


    加载框架的配置文件

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

    定时任务调度


HttpSessionListener监听器的使用

    HttpSessionListener监听器作用

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

HttpSession创建和销毁

    创建:

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

   销毁:

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

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

        手动调用session.invalidate()方法   

HttpSessionListener监听器的方法

    监听HttpSession对象创建

        sessionCreated(HttpSessionEvent

se)

    监听HttpSession对象销毁

        sessionDestroyed(HttpSessionEvent

se)

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


监听器的代码

监听器的配置

问题:

    访问HTML是否会创建Session?

    访问JSP是否会创建Session?

    访问Servlet是否会创建Session?


ServletRequestListener监听器的使用


ServletRequestListener监听器的作用

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


ServletRequest对象的创建和销毁

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

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


ServletRequestListener监听器的方法

监听ServletRequest对象的创建

 requestInitialized(ServletRequestEvent sre)

监听ServletRequest对象的销毁

 requestDestroyed(ServletRequestEvent sre)

编写监听器代码

监听器代码

监听器配置

问题:

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

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

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


统计当前在线人数的案例


案例分析

[if !vml]

[endif]

    在服务器启动的时候需要有一个初始值为零。

    当浏览器访问服务器上的某个JSP了,就会创建Session,

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

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

代码实现

1、创建ServletContextListener进行初始化


2、创建HttpSessionListener


3、配置监听器


4、创建JSP页面


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


一、三类监听器


ServletContextAttributeListener

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

attributeAdded(ServletContextAttributeEvent event)

attributeRemoved(ServletContextAttributeEvent event)

attributeReplaced(ServletContextAttributeEvent event)



HttpSessionAttributeListener

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

attributeAdded(HttpSessionBindingEvent event)

attributeRemoved(HttpSessionBindingEvent event)

attributeReplaced(HttpSessionBindingEvent event)


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监听器

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

 valueBound(HttpSessionBindingEvent event)

 valueUnbound(HttpSessionBindingEvent event)

测试代码

HttpSessionActivationListener监听器

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

sssionDidActivate(HttpSessionEvent se)

sessionWillPassivate(HttpSessionEvent se)

测试代码

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

    Context标签可以配置在:

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

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

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

Filter

Filter的概述

什么是Filter

    Filter称为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对Web服务器所管理的资源(JSP、Servlet、静态图片、静态html文件等)进行拦截,从而实现一些特殊的功能

    Filter就是过滤从客户端向服务器发送请求


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

<h1>商品信息显示页面</h1>

<table border="1" width="600">

<tr>

  <td>商品名称</td>

  <td>商品价钱</td>

  <td>商品总数量</td>

  <td>商品上架时间</td>

</tr>

<c:forEach var="myuser" items="${ list }">

<tr>

  <td>${ myuser.gname }</td>

  <td>${ myuser.price }</td>

  <td>${ myuser.number }</td>

  <td>${ myuser. gdate}</td>

</tr>

</c:forEach>

</table>

</body>

</html>

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

推荐阅读更多精彩内容

  • 参考文章:https://www.cnblogs.com/xdp-gacl/p/3969249.html 1. 概...
    Tian_Peng阅读 434评论 0 0
  • 监听器(listener) 监听器简介 :监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个...
    奋斗的老王阅读 2,500评论 0 53
  • 1、过滤器的基本概念 现实中的监听器定义:是指专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,...
    年少懵懂丶流年梦阅读 327评论 1 2
  • 一、监听器的概览 监听器是指专门用于对其他对象身上发生的事件或状态的改变进行监听和相应处理的对象,当被监视的对象发...
    不知名的蛋挞阅读 1,349评论 0 3
  • 有些应用在启动的过程中为了更友好的展示,会自动去获取当前机器的hostname,这时会调用到gethostname...
    rockybean阅读 1,701评论 0 0