一、监听器:监听某一个事件的发生,状态的改变
监听器的内部机制,其实就是接口回调
监听器的实现:
1、定义一个类,实现接口
2、注册或配置监听器
<listener>
<listener-class>监听器接口实现类名</listener-class>
</listener>
二、web监听器(总共8个,划分为三种类型)
类型一:监听三个作用域创建和销毁
request --- httpServletRequest
session --- httpSession
application --- ServletContext
1、ServletContextListener
servletContext创建:
1.启动服务器的时候
servletContext销毁:
2.关闭服务器,从服务器移除项目
2、ServletRequestListener
request创建:
访问服务器上的任意资源都会有请求出现
访问html:会
访问jsp:会
访问Servlet:会
request销毁:
服务器已经对此次请求做出了响应
3、HttpSessionListener
session创建:
只要调用getSession
访问html:不会
访问jsp:会
访问Servlet:会
session销毁:
超时、非正常关闭
正常关闭服务器
作用:
小例子:
ServletContextListener
利用它来在ServletContext创建的时候:
1、完成想要初始化的工作
2、执行自定义任务调度,执行某些任务,如Timer
HttpSessionListener
统计在线人数
类型二:监听三个作用域属性状态变更
request --- ServletRequestAttributeListener
session --- HttpSessionAttributeListener
servletContext --- ServletContextAttributeListener
可以监听在作用域中值添加、替换、删除
类型三:监听httpSession里面存储的值的状态变更
这一类监听器不用注册
1、HttpSessionBindingListener
2、HttpSessionActivationListener
钝化(序列化)
把内存中的数据,存储到硬盘上
活化(反序列化)
把硬盘中的数据读取到内存中
session的钝化、活化意义:session中的值可能有很多,可以把长时间不会用到的钝化到硬盘上,下次使用的时候再活化,即拿到内存中使用
如何让session在一定时间内钝化,该如何配置:<context></context>
1、在tomcat里面 conf/context.xml
对所有运行在这个服务器的项目生效
2、在conf/Catalina/localhost/context.xml
对localhost生效。如localhost:8080
3、在自己的web工程项目中的META-INF/context.xml
只在当前的工程生效