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 id
String 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 stub
if (count > 0) {
count--;
}
HttpSession session = se.getSession();
ServletContext application = session.getServletContext();
application.setAttribute("countsList", count);
/*HttpSession session =se.getSession();
ServletContext application = session.getServletContext();
// 获取session id
String 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) %>