本文共 1699 字,大约阅读时间需要 5 分钟。
监听器小例子
统计同时在线人数:
每当有一个用户登录的时候在服务器端创建一个session对象,写一个监听器,监听session的创建与销毁,每当创建一个session对象的时候就把计数器+1,然后保存到servletContext对象上,每当有一个用户下线的时候就销毁对应的session对象,把计数器-1,保存到servletContext上。
CountListener.java代码:
package web;import javax.servlet.ServletContext;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class CountListener implements HttpSessionListener{ private int count = 0; //计数器 /** * session对象创建之后,容器会产生HttpSessionEvent事 * 件,然后调用sessionCreated方法。 */ public void sessionCreated(HttpSessionEvent arg0) { System.out.println("sessionCreated start ..."); count ++; //通过事件对象(HttpSessionEvent)找到session HttpSession session = arg0.getSession(); ServletContext sctx = session.getServletContext(); //将人数count绑定到servletContext,这样,可以随时访问。 sctx.setAttribute("count",count); } /** * 容器在销毁session对象之后,会调用sessionDestroyed方 * 法。 */ public void sessionDestroyed(HttpSessionEvent arg0) { System.out.println("sessionDestoyed start ..."); count --; //通过事件对象(HttpSessionEvent)找到session HttpSession session = arg0.getSession(); ServletContext sctx = session.getServletContext(); //将人数count绑定到servletContext,这样,可以随时访问。 sctx.setAttribute("count",count); }}
logout.jsp
因为关闭浏览器并不能销毁对应的session对象,故手动删除对应的session对象。
<% session.invalidate();%>
index.jsp
web.xmlhello
This is my JSP page. 在线人数:<%=application.getAttribute("count") %> 退出系统
company hello web.CountListener index.jsp
小知识:
配置文件先后顺序 一般是:
全局参数->过滤器->监听器->servlet、servlet-mapping->错误处理页面
转载地址:http://jzrws.baihongyu.com/