监听器的概念
web应用当中监听器是什么:
web应用服务器—>监听器<—>Session<—用户访问
定义:监听器是Servlet中的一种特殊类,用于监听ServletContext、HttpSession和ServletRequset等域对象的创建与销毁事件,以及监听这些域对象的属性发生修改的事件。
监听器可以在事件发生前、发生后做一些必要的处理。
监听器的用途
统计用户在线人数、在线用户
系统启动时加载初始化信息,如缓存、公共变量、数据库连接、定时器等等
统计网站访问量
跟Spring结合
监听器的启动顺序
Servlet2.5下是以web.xml中的配置顺序加载的;
Servlet3.0下没有办法制定顺序。
加载 顺序:
监听器>过滤器>Servlet
监听器的分类
按对象划分:
1.监听应用程序环境对象ServletContext
2.监听用户会话对象HttpSession
3.监听请求消息对象ServletRequset
按监听事件划分:
1.监听域对象自身的创建和销毁
每个Listener 两个事件处理方法:初始化、销毁
ServletContext ServletContextListener主要用途:定时器、全局属性对象
HttpSession HttpSessionListener 主要用途:统计在线人数、记录访问日志
ServletRequset ServletRequsetListener 主要用途:读取参数、记录访问历史
2.监听域对象的属性的增加和删除
每个AttributeListener三个事件处理方法:AttributeAdded(增加)、AttributeRemoved(删除)、AttributeReplaced(替换)
ServletContext ServletContextAttributeListener主要用途:定时器、全局属性对象
HttpSession HttpSessionAttributeListener主要用途:统计在线人数、记录访问日志
ServletRequset ServletRequsetAttributeListener主要用途:读取参数、记录访问历史
3.监听绑定到HttpSession域中的某个对象的状态
绑定—>解除绑定 绑定:session.setAttribute 解除绑定:session.removeAttribute
钝化—>活化 钝化:session对象持久化存储活化:将持久化的session从存储设备恢复到内存
session钝化机制:将服务器中不经常使用的session对象暂时序列化到系统文件系统或数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成。
HttpSessionBindingListener 绑定:valueBound方法解除绑定:valueUnbound方法
HttpSessionActivationListener 钝化:sessionWillPassivate方法活化:sessionDidActivate方法
这两个监听器不需要在web.xml注册
在Servlet3.0下的使用
@WebListener
监听器的实例
步骤:
1.创建一个实现监听器类接口的类
2.配置web.xml进行注册
一个简单的监听器,打印requset参数中参数名为name的参数值
public class MyServletRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed( ServletRequestEvent arg0 ) {
}
@Override
public void requestInitialized( ServletRequestEvent arg0 ) {
System.out.println( arg0.getServletRequest().getParameter( "name" ) );
}
}
<listener>
<listener-class>com.test.example.MyServletRequestListener</listener-class>
</listener>