JavaWeb基础—监听器Listener
javaWeb三大组件:
servlet
listener(用的不多)
filter
什么叫监听器:
初次相见:AWT
二次相见:SAX(XML解析时)
Bundle 绑定
监听器是一个接口,内容由我们实现
它需要注册,例如注册在按钮上
监听器的方法会在特定事件发生时调用
特性:
总是和观察者模式相关。
事件源:谁飙车
事件:有人飚车了
监听器:交警(就监听谁飙车,就注册在事件源身上),监听器的方法(这里就是抓捕)
当然可能不止一个。
JavaWeb中的监听器(八大监听器)
常见的事件源:ServletContext
生命周期监听:ServletContextListener
出生(生之后)[相对用的多一些,虽然整个监听器用的都少]
和死亡(死之前)时两个方法(人是从生之后开始干事)
属性监听: ServletContextAttributeListener 添加、替换、移除属性三个方法
HttpSession
生命周期监听
类同上,详细参见J2EE api
属性监听
ServletQequest
生命周期监听
类同上
属性监听
外加感知监听:添加到JavaBean中,与HttpSession相关,无需再web.xml中注册
让javaBean实现HttpSessionBindingListener接口,从此bean就知道是否被添加或者被移除了
session拥有死而复生的能力(存在本地硬盘)serializable
取消序列化 在context.xml中加<Manager pathname=""/>
实际里面打开注释就行,里面已经写好
session的序列化与反序列化(关闭与启动服务器)
应用场景:
1.一般来说,服务器启动后,就不会再关闭了,
但是如果逼不得已需要重启,而用户会话还在进行
相应的操作,这时就需要使用序列化将session信息
保存起来放在硬盘,服务器重启后,又重新加载。
这样就保证了用户信息不会丢失,实现永久化保存
简单说就是把对象转换为字节形式存储的过程称为对象的序列化
当然,这一切前提都是实现Serializable
2.淘宝每年都会有定时抢购的活动,很多用户会提前
登录等待,长时间不进行操作,一致保存在内存中,
而到达指定时刻,几十万用户并发访问,就可能会有
几十万个session,内存可能吃不消,这时就需要进行
对象的活化、钝化,让其在闲置的时候离开内存,
将信息保存至硬盘,等要用的时候,就重新加载进内存
钝化与活化(太多session了,把长时间不使用的倒出来)
persistent 持久稳固的
配置文件中加
<Manager className="org.apache.catalina.session.PersistentManager"
saveOnRestart="true" maxActiveSessions="1">
<Store className="org.apache.catalina.session.FileStore" directory="d:/a">
</Store>
</Manager>
这里最后的监听器:
HttpSessionActivationListener
两个方法,分别钝化与活化时调用,JavaBean实现这个接口,他也知道何时被钝化与活化了
步骤:
写一个监听器类(实现指定的接口)
完成注册(只需在web.xml中配置)在myeclipse中直接创建Listener选择实现的接口,会自动在web.xml中注册
生命周期事件对象:ServletContextEvent (getServletContext()方法最为主要)
其它类同,主要职责 报告事件源
属性监听类同(用的不多)
主要方法event.getName()与getValue()的属性相关方法
JavaWeb基础—监听器Listener的更多相关文章
- Javaweb基础--->监听器listener(转发)
JavaWeb中的监听器 1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 Servl ...
- 深入分析JavaWeb Item38 -- 监听器(Listener)高速学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和对应处理的对象,当被监视的对象发生情况时,马上採取对应的行动.监听器事实上就是一个实现特定接口的普 ...
- 深入分析JavaWeb Item39 -- 监听器(Listener)学习进阶
一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信 ...
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- javaWeb学习总结(11)- 监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- javaWeb学习总结(11)- 监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其 实就是一个实现特定接口的普 ...
- JavaWeb学习 (二十七)————监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- JavaWeb学习笔记(二十一)—— 监听器Listener
一.监听器概述 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对 ...
- JavaWeb—监听器Listener
1.简介 Listener是Servlet的监听器,Servlet 监听器用于监听一些重要事件的发生,监听器对象在事情发生前.发生后可以做一些必要的处理. JavaWeb里面的listener是通过观 ...
随机推荐
- pytts3语音合成遇到的中文问题
在使用pytts3语音合成时,遇到中文语音错乱.程序代码本身很简单,也是网上公认的一种写法: #coding: UTF-8import pyttsx3; engine = pyttsx3.init() ...
- Array类型
Array类型 Array也是ECMAScript中常用类型之一,其特点是数组中的每一项都可以保存任何类型的数据,数组的大小可以动态调整. 创建数组 方式1:使用Array构造函数 var books ...
- mblog相关
Mblog mblog(mini blog) 是一个用Java实现的多人博客, 使用 mysql 数据库. 使用的框架: Bootstrap 3 Spring mvc Velocity Hiberna ...
- python升级 (2.6升级到3.5)
在引用模块pandas时竟然提示不支持2.6, 果断升级,在网上找了很多博客,觉得这个比较清楚(https://blog.csdn.net/my_bai/article/details/7289602 ...
- 如何在C++中动态建立二维数组(转)
http://blog.sina.com.cn/s/blog_7c073a8d0100qp1w.html http://blog.163.com/wujiaxing009@126/blog/stati ...
- 【C#】#102 发送邮件
项目需求:定时的发送邮件,于是学习了如何发送邮件 下面有一个简单的例子.能够实现简单的发送邮件,加上附件可以添加一个属性[Attachment],然后配置上附件的路径 Demo下载 代码总共只有一下这 ...
- C++ Circle
作业链接 https://github.com/How-Come/object-oriented/tree/master/Circle
- JQuery $.axaj的基本格式
总是忘了,保存以备后用. $.ajax({ url: '', //请求的url地址 dataType: "json", //返回的格式为json async: true, //请求 ...
- HttpClient的包含注意事项
HttpClient 功能介绍 以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页. 实现了所有 HTTP 的方法(GET,POST,PU ...
- ant jmeter jenkins 实现自动化测试
编者按: 本文核心的关键是ant去调用build.xml 执行自动化测试任务. bulid.xml 文件的内容按照注释修改为你自己服务器相关信息. 配置完成后一定要手动在服务器上执行一次,确保你配置的 ...