监听器
监听器是Web应用开发的一个重要组成部分。通过它可以监听Web应用上下文信息,Srevlet请求信息,Servlet会话信息。当服务器启动时,监听器自动加载(执行构造函数),特定事件发生时,容器自动调用相应监听器中对应的事件处理方法。
监听器接口
1.ServletContext事件监听器:用于监听应用程序环境对象。可以监听到ServletContext对象中属性的变化(增加,删除,修改),也可以监听到ServletContext对象本身的变化(创建与销毁)
接口:
ServletContextAttributeListener
ServletContext.Listener
2.HttpSession(会话)事件监听器:用于监听用户会话对象。可以监听到HttpSession对象中属性的变化(增加,删除,修改),也可以监听到HttpSession对象本身的变化(创建与销毁),还可以监听到HttpSession对象是否绑定到该监听器对象上。
接口:
HttpSessionAttributeListener
HttpSessionListener
HttpSessionActivationListener
HttpSessionBindingListener
3.ServletRequest事件监听器:用于监听请求消息对象。可以监听到ServletRequest对象中属性的变化(增加,删除,修改),也可以监听到ServletRequest对象本身的变化(创建与销毁)
接口:
ServletContextAttributeListener
ServletRequestListener
使用示例
会话计数监听
1.创建监听器。新建Class时指定class实现的接口(HttpSessionListener)
package listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class Listener implements HttpSessionListener {
private static int count=0;
public void sessionCreated(HttpSessionEvent sessionEvent) {
count++;
}
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
if(count>=1) count--;
}
public static int getcount(){
return count;
}
}
2.在web.xml中配置监听器
<listener>
<listener-class>listener.Listener</listener-class>
</listener>
3.显示页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="listener.Listener"%>
<html>
<head>
</head>
<body>
<h4>欢迎<h4>
<h2>当前在线人数:<%=Listener.getcount()%><h2>
</body>
</html>