监听器的种类非常多 想做什么监听器 就实现什么监听器接口就行
编写Session监听器示例
1.实现session监听器接口
package com.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnlineCountListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
if (onlineCount==null){
onlineCount=new Integer(1);
}else{
int count = onlineCount.intValue();
onlineCount=new Integer(count+1);
}
servletContext.setAttribute("onlineCount",onlineCount);
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
if (onlineCount==null){
onlineCount=new Integer(0);
}else{
int count = onlineCount.intValue();
onlineCount=new Integer(count--);
}
servletContext.setAttribute("onlineCount",onlineCount);
}
}
2.在web.xml中注册监听器
<listener>
<listener-class>com.listener.OnlineCountListener</listener-class>
</listener>
3.页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>
当前在线人数为: <span><%=this.getServletConfig().getServletContext().getAttribute("onlineCount")%></span>
</h1>
</body>
</html>
网页测试
打开两个网页时: