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是通过观 ...
随机推荐
- centos 安装golang笔记
1.使用yum安装 yum install go 这个命令可以将go环境安装到linux上. 2.配置gopath 第一步安装成功的go命令会被放入/usr/lib/golang/bin /usr/l ...
- 【Kendo UI系列开发使用笔记】01-简单介绍
ps:接触telerik出品的kendo ui系列已经快有一年了,使用过程中也在不断踩坑填坑.这套UI用起来还是非常爽的,尤其asp.net mvc版的配合lambda表达式来配置参数非常流畅.这次对 ...
- [C#] Microsoft .Net框架SerialPort类的用法与示例
从Microsoft .Net 2.0版本以后,就默认提供了System.IO.Ports.SerialPort类,用户可以非常简单地编写少量代码就完成串口的信息收发程序.本文将介绍如何在PC端用C# ...
- simple Terracotta session 同步
部署前提: 配置好java环境和已有tomcat实例. 地址1:http://vdisk.weibo.com/s/dzUJr1vLcAWHl 地址2:http://code.taobao.org/p/ ...
- [转载]Cool, Tomcat is able to handle more than 13,000 concurrent connections
Last time I have promised you to take a look at more real life scenario regarding threads. In the la ...
- Btree并发内存回收
在并发写Btree原理剖析 一文中提到,节点内存回收有可能导致内存突增以及影响写性能.本文将阐述最近对内存回收的改进,多线程可并行回收内存. 回收策略 采用基于版本的机制,Btree全局维护一个版本号 ...
- Java中简单提示异常代码的行号,类名等
public class Test1 { public static void main(String args[]) { System.out.println(getLineInfo()); get ...
- SDN 第一次作业
你会选择作 网络编程 方向的程序员吗?为什么? 答: 可能会选择吧.看了那篇文章感觉网络编程的程序员和其他的程序员都并不简单,网络编程的程序员可能更要对网络的知识更加了解.我现在也有机会能接触网络方向 ...
- 【转载】socket 的 connect、listen、accept 和全连接队列、半连接队列的原理
转自:http://blog.csdn.net/tennysonsky/article/details/45621341 写在前面: 1. accept 只是从全连接队列拿出一个已经建立好的socke ...
- Python的网络编程 Socket编程
Socket是进程间通信的一种方式,与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,网络上各种各样的服务大多都是基于Socket来完成通信的,要解决网络上两台主机间的通信问题,首先要唯 ...