一、在web.xml中配置过滤器:
<listener>
<listener-class>com.geo.dsp.webapp.listener.UserCounterListener</listener-class>
</listener>
1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener> 和<context-param>两个结点。
2、紧急着,容创建一个ServletContext(servlet上下文),这个 web项目的所有部分都将共享这个上下文。
3、容器将<context-param>转换为键值对,并交给 servletContext。 ---》容器的一些常量
4、容器创建<listener>中的类实例,创建监听器。 --》在应用启动前就完成
二、UserCounterListener此方法实现了ServletContextListener, HttpSessionAttributeListener这两个接口,监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent
就可以给在线人数加1。常用的监听接口有以下几个:
ServletContextAttributeL
ServletContextListener监听ServletContext。当创建ServletContext时,激发 contextInitialized(ServletContextEvent
HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session
HttpSessionAttributeList
UserCounterListener设置全局变量USERS_KEY来保存登陆用户,页面读取
<c:forEach items="${applicationScope.userNames}" var="user">
<tr align="center" οnmοuseοver="this.style.background='#f7f9fb'" οnmοuseοut="this.style.background=''" >
<td > ${user.username}</td>
<td > ${user.firstName} ${user.lastName}</td>
</tr>
</c:forEach>