Listener 监听器

一 监听器内部原理:其实就是接口回调

需求:A在执行循环,当循环到5的时候,通知B

事先先把某一个对象传递给A ,当A执行到5的时候,通过这个对象来调用B中的方法

但是不是直接传递B的实例,而是传递一个B所实现的接口过去。未来的类只要实现这个接口,都能被A调用。

二、 监听器的三个作用域的销毁和创建

web监听器:8个,划分成三种类型

  •   *监听三个作用域的创建和销毁

  •   *监听三个作用域属性状态变更

  • *监听httpSession里面存值状态变更

*步骤:

  1. 定义一个类,实现接口
  2. 注册|配置监听器
  3. <listener>
    <listener-class>com.listener.MyContextListener</listener-class>
    </listener>

*监听三个作用域的创建和销毁

//pageContext(作用域当前页面)

  • request   ---HttpServletRequst
  • session  ----HttpSession
  • application  ---ServletContext

1. ServletContextListener   

ServletContext创建:

  • 启动tomcat服务器的时候

  ServletContext销毁:

  • 关闭服务器
  • 从服务器移除项目

ServletContext作用:

  1. 在ServletCOntext创建的时候,完成自己想要的初始化工作
  2. 执行自定义任务调度,执行某一个任务

2. ServletRequestListener  

request创建:访问服务器上的任何资源

  • 访问html
  • 访问JSP
  • 访问Servlet

 request销毁:

  • 服务器对这次请求做出了响应,request销毁

ServletRequestListener 作用:

3. HttpSessionListener

session的创建:

  • 只要调用了getSession
  • html:不会
  • jsp:会
  • servlet:会( request.getSession())

session的销毁 :

  • 超时 30分钟
  • 正常关闭服务器(序列化)
  • 非正常关闭  销毁

HttpSessionListener作用: 统计在线人数

*监听三个作用域属性状态变更

  • servletContext   --- ServletContextAttributeListener
  • request  --- ServletRequestAttributeListener
  • session  --- HttpSessionAttributeListener
  • 可以监听在作用域中值 添加 | 替换 | 移动的动作

*监听httpSession里面存值状态变更,钝化和活化

这类监听器不用注册,1 让JavaBean实现该接口即可,活化还需要实现序列化接口Serializable

  • HttpSessionBindingListener:绑定和解除绑定(session.setAtt  &  session.removeAtt)
  • @Override
    public void valueBound(HttpSessionBindingEvent event) {
    System.out.println("HttpSessionBindingEvent.valueBound对象被绑定进来");
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
    System.out.println("HttpSessionBindingEvent.valueUnbound解除对象绑定");
    }

  • HttpSessionActivationListener:钝化和活化
  • 用于监听session的值是钝化(序列化)还是活化(反序列化)的动作
  • 序列化(钝化):把内存中的数据存储到硬盘,关闭服务器时钝化
  • 反序列化(活化):把硬盘中的数据读取到内存中
  • 作用:session的值可能会很多,并且我们有很长一段时间不使用这个内存中的值,可以考虑到钝化到硬盘,要使用的时候在活化到内存。
  • 如何让session在一定的时间内钝化?
  • 1.在/conf/context.xml里面配置(对所有运行在服务器的项目生效),或者在/conf/catalina/localhost/context.xml里面配置(对localhost生效)
  • 2.在自己的web工程项目中的META-INF/context.xml(只对当前的工程生效)
  • maxIdleSwap:1分钟不用即被钝化   directory:钝化后文件存放的目录位置(\work\Catalina\localhost\9ListenerAndFilter\itsession)
  • <Context>
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
    <Store className="org.apache.catalina.session.FileStore" directory="it315"/>
    </Manager>
    </Context>

十九 Listener的更多相关文章

  1. spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的?

    spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的? 消息中间件在解决异步处理,模块间解耦和,和高流量场景的削峰,等情况下有着很广泛的应用 . 本文将跟大家一起 ...

  2. 无废话ExtJs 入门教程十九[API的使用]

    无废话ExtJs 入门教程十九[API的使用] extjs技术交流,欢迎加群(201926085) 首先解释什么是 API 来自百度百科的官方解释:API(Application Programmin ...

  3. Python之路【第十九章】:Django进阶

    Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...

  4. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  5. Bootstrap <基础十九>分页

    Bootstrap 支持的分页特性.分页(Pagination),是一种无序列表,Bootstrap 像处理其他界面元素一样处理分页. 分页(Pagination) 下表列出了 Bootstrap 提 ...

  6. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  7. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十九】

    <Web 前端开发精华文章推荐>2013年第七期(总第十九期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...

  8. Python之路【第十九篇】:爬虫

    Python之路[第十九篇]:爬虫   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...

  9. KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础

    原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...

随机推荐

  1. 杭电 1059 Dividing

    Dividing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  2. 杭电2033 人见人爱A+B

    人见人爱A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  3. ES-倒排索引

    一.什么事倒排索引 二.倒排索引为什么查询速度快 (1)ES全文检索的底层是使用倒排索引实现的 (2)倒排索引会将文档的内容进行关键词分词,可以使用关键词直接定位到文档的内容

  4. C语言-断言

    1 作用: 断言常做语言处理的高级形式,自动处理软件隐藏很深其且它手段不易发现的错误,快速进行异常定位.同时这也是软件单元测试必须的技术. 2 使用范围: 2.1放在函数入口对入口参数进行合法性检查( ...

  5. nyoj 34

    题目:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=34 思路:第一种方法是枚举10~100进行计算判断,第二种方法是孙子定理,最近正好学了一 ...

  6. pip使用技巧

    1. pip install 'easydict==1.6' --force-reinstall 强制安装制定version 2. pip install git+https://github.com ...

  7. December 21st, Week 51st Saturday, 2019

    May the odds be ever in your favor. 愿好运永远眷顾你. From The Hunger Games. May we all have good luck, and ...

  8. 第二周之Hadoop学习(二)

    这篇博客根据http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/中的教程进行学习: 首先按照教程的操作的第一步的时候,电脑直接蓝屏了. 但是依然 ...

  9. PAT T1016 Uniqueness of MST

    dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~ #include<bits/stdc++.h> using namespace std; ; const int inf ...

  10. PAT T1011 Cut Rectangles

    大模拟题,按要求建立多边形,先定位斜边的位置,再分类讨论~ #include<bits/stdc++.h> using namespace std; ; struct node { dou ...