servlet监听器实现在线人数统计Posted on
一.准备知识
二.预备知识 通过ServletContext 的实例可以存取应用程序的全局对象以及初始化阶段的变量。 在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。 注意:全局对象即Application范围对象,初始化阶段的变量指在web.xml中,,经由<context-param>元素所设定的变量,它的范围也是Application范围,例如:
Name</param-name> browser</param-value> </context-param>
当容器启动时,会建立一个Application范围的对象,若要在JSP网页中取得此变量时:
String name = (String)application.getInitParameter("Name"); ${initPara.name} //若是在Servlet中,取得Name的值方法: String name = (String)ServletContext.getInitParameter("Name");
目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,如下:
突然不支持图片发布, 笔者也很郁闷,需要的读者自己查吧。。。
三.统计在线人数
1.第一种方式
package webbook.chapter14;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class CounterListener implements HttpSessionListener {onlineNumber = 0;getOnlineNumber() {return onlineNumber;}public void sessionCreated(HttpSessionEvent se) {onlineNumber++;}public void sessionDestroyed(HttpSessionEvent se) {onlineNumber–;}}当前应用中一共有<%=CounterListener.getOnlineNumber()%>人在线<br>
统计的数字并不完全准确,因为可能用户下线了,session还没失效,怎么办呢?俺也不知道。。
2.第二种方式
显示谁在线,使用ArrayList,创建session时加入,销毁时删除(remove)。
四.结束语
好好学习,天天向上。。。。。
销售世界上第一号的产品——不是汽车,