1、实现一个监听器的接口;(有n种监听器)
编写一个监听器类去实现监听器的接口(这里以HttpSessionListener 为例)
package com.zhang.Listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
//统计在线人数
public class Listenertest01 implements HttpSessionListener {
@Override
//创建一个session监听,一旦创建一个session就会触发
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
//创建session
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
//取值,强转为int
Integer onlinecount = (Integer) servletContext.getAttribute("onlinecount");
//判断是否有人在上网,数量加1
if (onlinecount==null){
onlinecount=new Integer(1);
}else {
onlinecount=new Integer(onlinecount+1);
}
servletContext.setAttribute("onlinecount",onlinecount);
}
@Override
//销毁session事件,一旦销毁一个session就会触发
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
//创建session
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
//取值,强转为int
int onlinecount = (int) servletContext.getAttribute("onlinecount");
//判断是否有人在上网,数量加1
if (onlinecount==0){
onlinecount=0;
}else {
onlinecount=onlinecount-1;
}
servletContext.setAttribute("onlinecount",onlinecount);
}
//session销毁方案:1手动销毁 httpSessionEvent.getSession().invalidate();
//session销毁方案:2在web.xml里设置
// 1 分钟为单位
//
}
2、web.xml中注册监听器
com.zhang.Listener.Listenertest01
3、Jsp页面编写和取值
<%@page contentType="text/html;charset=UTF-8" language="java" %>
Hello World!
当前有<%=this.getServletConfig().getServletContext().getAttribute("onlinecount")%>人



