Listener监听器(HttpSessionListener ,HttpSessionAttributeListener)
HttpSessionListener用于实现session的创建和销毁。
统计在线人数
package com.zhiyou100.listener;//import java.util.Hashtable;
//import java.util.Map;import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;/*** Application Lifecycle Listener implementation class CountsListener**/
@WebListener
public class CountsListener implements HttpSessionListener, HttpSessionAttributeListener, HttpSessionActivationListener, HttpSessionBindingListener {int count = 0;/*** Default constructor. */public CountsListener() {// TODO Auto-generated constructor stub}/*** @see HttpSessionListener#sessionCreated(HttpSessionEvent)*/public void sessionCreated(HttpSessionEvent se) { // TODO Auto-generated method stub
// 第一种参考方法if (count < 0) {count = 0;}else {count++;}HttpSession session = se.getSession();ServletContext application = session.getServletContext();application.setAttribute("countsList", count);// 第二种参考方法/*HttpSession session = se.getSession();ServletContext application =session.getServletContext();
// 获取session idString sessionId = session.getId();if (session.isNew()) {String user = (String)session.getAttribute("user");Map<String, String> online = (Map<String, String>)application.getAttribute("online");if (online == null) {online = new Hashtable<String,String>();}online.put(sessionId, user);application.setAttribute("online", online);}*/}/*** @see HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)*/public void valueBound(HttpSessionBindingEvent event) { // TODO Auto-generated method stub}/*** @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)*/public void sessionDestroyed(HttpSessionEvent se) { // TODO Auto-generated method stubif (count > 0) {count--;}HttpSession session = se.getSession();ServletContext application = session.getServletContext();application.setAttribute("countsList", count);/*HttpSession session =se.getSession();ServletContext application = session.getServletContext();
// 获取session idString sessionId = session.getId();Map<String, String> online = (Map<String, String>)application.getAttribute("online");if (online != null) {
// 删除用户online.remove(sessionId);}application.setAttribute("online", online);*/}/*** @see HttpSessionActivationListener#sessionDidActivate(HttpSessionEvent)*/public void sessionDidActivate(HttpSessionEvent se) { // TODO Auto-generated method stub}/*** @see HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)*/public void attributeAdded(HttpSessionBindingEvent se) { // TODO Auto-generated method stub}/*** @see HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent)*/public void attributeRemoved(HttpSessionBindingEvent se) { // TODO Auto-generated method stub}/*** @see HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent)*/public void attributeReplaced(HttpSessionBindingEvent se) { // TODO Auto-generated method stub}/*** @see HttpSessionActivationListener#sessionWillPassivate(HttpSessionEvent)*/public void sessionWillPassivate(HttpSessionEvent se) { // TODO Auto-generated method stub}/*** @see HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)*/public void valueUnbound(HttpSessionBindingEvent event) { // TODO Auto-generated method stub}}
在线${userList}人
或者
<%=sessionId %>
<%online.get(sessionId) %>